gpt4 book ai didi

java - 使用 Java 在 Zip 文件中重新创建文件夹结构 - 空文件夹

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:56 24 4
gpt4 key购买 nike

我尝试了几种使用 Java 将目录结构压缩到 zip 文件中的方法。无论我使用 ZipOutputStream 还是 Java NIO zip FileSystem,我都无法将空文件夹添加到 zip 文件。

我尝试使用 unix zip,它按预期工作,所以我排除了一个可能的 zip 格式问题。

我也可以做一些变通,在文件夹中添加一个空文件,但我真的不想这样做。

有没有办法使用 Java API 在 zip 文件中添加空文件夹?


编辑:根据答案和评论,this is pretty much the solution I got .

谢谢!

最佳答案

Java NIO 使这与使用普通文件系统一样简单。

public static void main(String[] args) throws Exception {
Path zipfile = Paths.get("C:\\Users\\me.user\\Downloads\\myfile.zip");

try (FileSystem zipfs = FileSystems.newFileSystem(zipfile, null);) {
Path extFile = Paths.get("C:\\Users\\me.user\\Downloads\\countries.csv"); // from normal file system
Path directory = zipfs.getPath("/some/directory"); // from zip file system
Files.createDirectories(directory);
Files.copy(extFile, directory.resolve("zippedFile.csv"));
}
}

在给定目录中给定一个 myfile.zip 文件,newFileSystem 调用将检测文件类型(在这种情况下,.zip 通常会泄露它)并创建一个压缩文件系统。然后您可以在 zip 文件系统中创建路径(目录或文件)并使用 Java NIO Files api 来创建和复制文件。

以上将在压缩文件的根目录创建目录结构/some/directory,该目录将包含压缩文件。

关于java - 使用 Java 在 Zip 文件中重新创建文件夹结构 - 空文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984510/

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