使用Java nio文件,重命名目录但如果已存在则将文件移动到现有目录

时间:2013-02-22 07:51:35

标签: java java-7

我想将Dir“Dir1”重命名为“Dir2”。

但如果“Dir2”退出,那么我想将“Dir1”文件移动到“Dir2”。 C:\艺术品\方向1 C:\艺术品\方向2 对于重命名

Files.move(path, path.resolveSibling("NewName"))); //Worked Ok

对于Dir已经在场,我试过

Path source = Paths.get("C:\\Artwork\\Dir1");
Path newDir = Paths.get("C:\\Artwork\\Dir2");
Files.move(source, newDir,StandardCopyOption.ATOMIC_MOVE); //Throwed AccessDeniedException
Files.move(source, newDir,StandardCopyOption.REPLACE_EXISTING); //Throwed DirectoryNotEmptyException

3 个答案:

答案 0 :(得分:3)

我已经编写了一些使用NIO File API复制目录的实用程序方法(该库是开源的):

的Maven:

<dependency>  
    <groupId>org.softsmithy.lib</groupId>  
    <artifactId>softsmithy-lib-core</artifactId>  
    <version>0.3</version>  
</dependency>  

教程:

http://softsmithy.sourceforge.net/lib/current/docs/tutorial/nio-file/index.html

API: CopyFileVisitor.copy

答案 1 :(得分:0)

如果目录2不存在,则使用Dir2.mkdir();创建目录。如果它已经存在,则moveDirectory(File Dir1, File Dir2);我们可以移动整个目录

答案 2 :(得分:0)

从Java 1.7开始,java.nio.file.Files提供了处理文件和目录的操作。特别是move,copy和walkFileTree函数。