繁体   English   中英

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

[英]TrueZip - How to get Size of a Folder within an Zip Archive

有没有一种方法可以通过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 在这里 ; 并使用Files.walkFileTree()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM