[英]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.