java笔记_两文件名互换

今天在用Java进行文件名互换时遇到了一个问题, 改名失败, 经分析修改后终于解决, 特此记录.

改名思路:


            /**
             * 1.将源文件名改为和新文件不冲突的名称.
             * 2.将新文件改为之前的源文件名.
             * 3.将改名后的源文件名改为新文件名.
             */


    /**
     * [声音防爆点击事件] 
     * @author 光影九曜	QQ:150032099
     * @return: void    返回类型    
     * @param e [事件对象]
     * @date:   2019年6月25日 下午3:09:03 
     */
    @FXML
    public void voiceSwitchAction(ActionEvent e) {
        File newFlie = new File("Sound.wz1");
        if (!newFlie.exists()) {
            Utils.showMessageDialog("Sound.wz1不存在");
            return;
        }
        File orgFlie = new File("Sound.wz");
        /**
         * 1.将源文件名改为和防爆文件不冲突的名称.
         * 2.将防爆文件改为源文件名.
         * 3.将改名后的源文件名改为防爆文件名.
         */
        boolean isRenamed = orgFlie.renameTo(new File("Sound.wz2"));
        if (!isRenamed) {
            Utils.showMessageDialog(orgFlie.getName() + "无法改名, 可能是游戏启动或者该文件被其他程序占用.");
            return;
        }
        isRenamed = newFlie.renameTo(new File("Sound.wz"));
        if (!isRenamed) {
            Utils.showMessageDialog(newFlie.getName() + "无法改名, 可能是游戏启动或者该文件被其他程序占用.");
            return;
        }
        isRenamed = orgFlie.renameTo(new File("Sound.wz1"));
        if (!isRenamed) {
            Utils.showMessageDialog(orgFlie.getName() + "无法改名, 可能是游戏启动或者该文件被其他程序占用.");
            return;
        }
    }

这段代码只有第一次改名成功, 后面的全都没有改名, 但是返回的却是true, 后来经过多方面的分析, 觉得可能是因为改名之后需要重新创建对象才能再次改名成功, 尝试了一下果然是这样.下面贴出代码:


    /**
     * [声音防爆点击事件] 
     * @author 光影九曜	QQ:150032099
     * @return: void    返回类型    
     * @param e [事件对象]
     * @date:   2019年6月25日 下午3:09:03 
     */
    @FXML
    public void voiceSwitchAction(ActionEvent e) {
        File newFlie = new File("Sound.wz1");
        if (!newFlie.exists()) {
            Utils.showMessageDialog("Sound.wz1不存在");
            return;
        }
        File orgFlie = new File("Sound.wz");
        /**
         * 1.将源文件名改为和防爆文件不冲突的名称.
         * 2.将防爆文件改为源文件名.
         * 3.将改名后的源文件名改为防爆文件名.
         */
        boolean isRenamed = new File("Sound.wz").renameTo(new File("Sound.wz2"));
        if (!isRenamed) {
            Utils.showMessageDialog(orgFlie.getName() + "无法改名, 可能是游戏启动或者该文件被其他程序占用.");
            return;
        }
        isRenamed = new File("Sound.wz1").renameTo(new File("Sound.wz"));
        if (!isRenamed) {
            Utils.showMessageDialog(newFlie.getName() + "无法改名, 可能是游戏启动或者该文件被其他程序占用.");
            return;
        }
        isRenamed = new File("Sound.wz2").renameTo(new File("Sound.wz1"));
        if (!isRenamed) {
            Utils.showMessageDialog(orgFlie.getName() + "无法改名, 可能是游戏启动或者该文件被其他程序占用.");
            return;
        }
    }
发布了14 篇原创文章 · 获赞 0 · 访问量 1772

猜你喜欢

转载自blog.csdn.net/qq_34101232/article/details/94018460