首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java 7新IO获取文件/目录大小

使用Java 7新IO获取文件/目录大小
EN

Stack Overflow用户
提问于 2011-08-31 18:21:01
回答 3查看 26.7K关注 0票数 53

如何使用java7中的新NIO获取文件或目录的大小?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-31 18:24:01

使用Files.size(Path)获取文件的大小。

就我所知,对于目录的大小(即其中包含的所有文件的大小),您仍然需要手动递归。

票数 68
EN

Stack Overflow用户

发布于 2013-11-09 06:02:11

下面是一个可以运行的示例,它还将跳过并记录它不能进入的目录。它使用java.util.concurrent.atomic.AtomicLong来累积状态。

代码语言:javascript
复制
public static void main(String[] args) throws IOException {
    Path path = Paths.get("c:/");
    long size = getSize(path);
    System.out.println("size=" + size);
}

static long getSize(Path startPath) throws IOException {
    final AtomicLong size = new AtomicLong(0);

    Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() {
        @Override
        public FileVisitResult visitFile(Path file,
                BasicFileAttributes attrs) throws IOException {
            size.addAndGet(attrs.size());
            return FileVisitResult.CONTINUE;
        }

        @Override
        public FileVisitResult visitFileFailed(Path file, IOException exc)
                throws IOException {
            // Skip folders that can't be traversed
            System.out.println("skipped: " + file + "e=" + exc);
            return FileVisitResult.CONTINUE;
        }
    });

    return size.get();
}
票数 6
EN

Stack Overflow用户

发布于 2011-12-13 00:11:12

代码语言:javascript
复制
MutableLong size = new MutableLong();
Files.walkFileTree(directoryPath, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                size.add(attrs.size());
            }
}

这将计算目录中所有文件的大小。但需要注意的是,目录下的所有文件都需要是普通文件,因为接口指定了BasicFileAttributes的大小方法:

“非常规文件的大小是特定于实现的,因此未指定。”

如果遇到不规范的文件,要么不包含它的大小,要么返回一些未知的大小。您可以使用以下命令检查文件是否正常

代码语言:javascript
复制
BasicFileAttributes.isRegularFile()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7255592

复制
相关文章

相似问题

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