gpt4 book ai didi

java - TrueZip - 如何获取 Zip 存档中文件夹的大小

转载 作者:行者123 更新时间:2023-12-01 10:27:21 26 4
gpt4 key购买 nike

有没有一种方法无需执行即可使用 TrueZip 获取文件夹的大小我自己递归?我担心运行时,因为我正在处理包含大量文件的文件。

使用 TrueZip 7.7.9

最佳答案

好的,这是一个仅使用标准 Java 7 API 的简单测试;它使用捆绑的 JSR 203 实现进行 zip:

public final class Test
{
public static void main(final String... args)
throws IOException
{
final Path zip = Paths.get("/home/fge/t.zip");

final URI uri = URI.create("jar:" + zip.toUri());

try (
final FileSystem fs = FileSystems.newFileSystem(uri, Collections.emptyMap());
final DirectoryStream<Path> stream = Files.newDirectoryStream(fs.getPath("/"));
) {
for (final Path entry: stream)
System.out.println(Files.size(entry));
}
}
}

上面的 zip 只包含顶层文件,不包含目录。

这意味着您可以使用此 API 来正确计算 zip 中文件的大小;无需解压。

您使用 Java 7;因此,您想要做的可能是使用 FileVisitor 来为您计算所有常规文件的大小。

这里我做了一个粗略的修改,使用了Files.size();请注意,在 FileVisitor 中,当您访问不是目录的文件系统条目时,您将获得一个 BasicFileAttributes 实例,您可以从中检索 size ().

Javadoc here ;并使用Files.walkFileTree()

使用 Java 8,这要简单得多,您可以使用 Files.find() 代替。

关于java - TrueZip - 如何获取 Zip 存档中文件夹的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295133/

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