簡體   English   中英

如何一次遞歸列出目錄中所有文件的大小

[英]How to list the size of all files in directory recursively at once

我試圖以遞歸方式一次列出類似於linux命令du -a的目錄中所有文件的大小,java除外。 而不是文件遍歷目錄中的每個文件,一次檢查一個文件的大小,這需要更多時間

String directory = "
File[] parentfile;
parentfile = listFiles(directory);
for (File f:parentfile){
System.out.println(f.getSize());
}

您需要瀏覽每個文件,但您可以使用Files.walk輕松完成:

Path directory = Path.of("...");
try (Stream<Path> stream = Files.walk(directory)) {
    long size = stream.filter(Files::isRegularFile)
            .mapToLong(p -> {
                try {
                    return Files.size(p);
                } catch (IOException e) {
                    throw new UncheckedIOException(e);
                }
            })
            .sum();
}

mapToLong中的 try-catch 是必要的,因為Function不允許檢查異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM