首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TrueZip -如何获取中文件夹的大小

TrueZip -如何获取中文件夹的大小
EN

Stack Overflow用户
提问于 2016-02-09 14:55:13
回答 1查看 189关注 0票数 0

有没有一种不用递归地使用TrueZip获取文件夹大小的方法?我担心运行时,因为我正在处理包含大量文件的档案。

使用TrueZip 7.7.9

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-10 18:06:54

好的,下面是一个简单的测试,它只使用标准的Java7API;它使用绑定的JSR 203实现来实现zip:

代码语言:javascript
复制
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()代替。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35295133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档