2016-07-18 77 views
1

我在尝试使用File#renameTo()重命名现有文件,但它似乎不起作用。'File#renameTo()'在java中不起作用

下面的代码代表什么,我试图做的:

public class RenameFileDirectory { 
    public static void main(String[] args) throws IOException { 
     new RenameFileDirectory(); 
    } 

    public RenameFileDirectory() throws IOException { 
     File file = new File("C:\\Users\\User-PC\\Desktop\\Nouveau dossier2\\file.png"); 
     File desFile = new File ("C:\\Users\\User-PC\\Desktop\\Nouveau dossier2\\file2.png"); 

     if (file.renameTo(desFile)) { 
      System.out.println("successful rename"); 
     } else { 
      System.out.println("error"); 
     } 
    } 
} 
+1

*但它似乎不工作* - 如何不工作? –

+1

如果我将你的伪代码清理成实际的代码,它对我来说工作得很好。你需要更清楚的是,什么,确切地说,不工作。请提供[mcve]。 – azurefrog

+0

在控制台,它打印我错误,并没有成功重命名 –

回答

3

尝试使用Files.move代替。如果你读了renameTo的javadoc,它指出:

这种方法的行为的许多方面是天生的平台依赖性:重命名操作可能无法从一个文件系统的文件移动到另一个,它可能不是原子的,并且如果具有目标抽象路径名的文件已经存在,它可能不会成功。应始终检查返回值以确保重命名操作成功。

+0

'move'的好处是通过抛出特定的异常而不是返回false来清楚地告诉我们问题。 – Pshemo