gpt4 book ai didi

java - 如何使用 NIO 创建当前工作目录上一级文件夹的 zip 文件?

转载 作者:行者123 更新时间:2023-12-01 12:40:20 25 4
gpt4 key购买 nike

我在使用 URI 类时遇到问题。

我可以使用如下代码在 c:\中创建一个 zip 文件:

// Properties for archive file we're creating
Map<String, String> archiveProperties = new HashMap<>();
archiveProperties.put("create", "true");
archiveProperties.put("encoding", "UTF-8");
URI archiveLocation = URI.create("jar:file:/" + "my.zip");

// Create archive
FileSystem archive = FileSystems.newFileSystem(archiveLocation, archiveProperties);

但如果您愿意的话,我确实希望在当前工作目录的上一级目录中创建 zip 文件。我尝试了很多事情,包括:

// Properties for archive file we're creating
Map<String, String> archiveProperties = new HashMap<>();
archiveProperties.put("create", "true");
archiveProperties.put("encoding", "UTF-8");
URI archiveLocation = URI.create("jar:file:../" + "my.zip");

// Create archive
FileSystem archive = FileSystems.newFileSystem(archiveLocation, archiveProperties);

但是我要么得到一个异常,在这种情况下 URI 不是分层的,要么它继续在 c:\

中创建

最佳答案

我终于想出了一个解决方案,尽管不是很漂亮:

// Properties for archive file we're creating
Map<String, String> archiveProperties = new HashMap<>();
archiveProperties.put("create", "true");
archiveProperties.put("encoding", "UTF-8");

String filePathName = System.getProperty("user.dir") + FILE_SEPARATOR + ".." + FILE_SEPARATOR + "myfile.zip";
filePathName = filePathName.replace('\\','/');
filePathName = filePathName.replaceAll(" ", "%20");
URI archiveLocation = URI.create("jar:file:///" + filePathName);

// Create archive
FileSystem archive = FileSystems.newFileSystem(archiveLocation, archiveProperties);

注意 FILE_SEPARATOR 来自 System.getProperty(file.separator)

关于java - 如何使用 NIO 创建当前工作目录上一级文件夹的 zip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25166314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com