使用Java NIO重命名ZIP中的非空目录

时间:2018-08-29 11:25:42

标签: java java-8

根据: How do I rename (not move) a file in JDK7?

我正在尝试使用Java NIO重命名ZIP中非空文件夹的文件夹名称

我的结果是创建了一个新目录,里面没有文件,并且没有删除旧目录。

我使用的代码但不起作用:

String zip = "/Users/xxx/Documents/test123/big_change.zip";
    Map<String, String> env = new HashMap<>();
    env.put("create", "true");
    Path path = Paths.get(zip);

    URI uri = URI.create("jar:" + path.toUri());
    try (FileSystem fs = FileSystems.newFileSystem(uri, env)) {
        //rename dir
        Path oldPath = fs.getPath("/some/directory3");
        Files.move(oldPath, oldPath.resolve("/some/directory232323"), StandardCopyOption.REPLACE_EXISTING);


    } catch (IOException e) {
        e.printStackTrace();
    }

我想念什么? (我只想重命名文件夹)

1 个答案:

答案 0 :(得分:2)

您可以使用java.nio.file.Files.move方法重命名目录,然后使用copy将文件Files.walkFileTree重命名:

  

移动文件树可能涉及复制而不是移动目录,这可以通过将 copy 方法与Files.walkFileTree实用程序方法结合使用来完成。

您可以关注java tutorial

import static java.nio.file.StandardCopyOption.*;

Files.move(source, target, REPLACE_EXISTING);
     

该方法最常与文件树递归机制一起使用。有关更多信息,请参见Walking the File Tree