如果不使用file.list()
或Files.list(path)
,如何計算目錄中的文件編號?通過java如何計算沒有列表的目錄中的文件編號()
我只想要一個號碼,沒有任何細節。請給我一個快捷的方式。
如果不使用file.list()
或Files.list(path)
,如何計算目錄中的文件編號?通過java如何計算沒有列表的目錄中的文件編號()
我只想要一個號碼,沒有任何細節。請給我一個快捷的方式。
如果您只關心不創建List<File>
您可能會使用Stream API
。
long count = Files.list(Paths.get(path))
.filter(p -> p.toFile().isFile())
.count();
System.out.println("count = " + count);
編輯的片段並不意味着要快。只是要求不要使用list()
或listFiles()
。 ;-)
在對包含兩百萬個文件的目錄中的文件數進行計數的不同方式進行小型比較之後,
所有命令都執行兩次。第一次執行是使用丟棄的文件緩存,第二次執行緊跟在第一次執行之後。
| ls | dir.list() | dir.listFiles() | Files.list(path)
--------------+-------+------------+-----------------+------------------
dropped cache | 9,120 | 5,518 | 5,879 | 59,175
filled cache | 946 | 1,992 | 2,401 | 51,179
倍以毫秒(逗號是千位分隔符)
在下面詳細的執行的命令。
LS
ls -f /tmp/huge-dir | wc -l
dir.list()
File hugeDir = new File("/tmp/huge-dir");
int numberFiles = hugeDir.list().length;
dir.listFile()
File hugeDir = new File("/tmp/huge-dir");
int numberFiles = hugeDir.listFiles().length;
Files.list基於這些圖(路徑)
。使用dir.list().length
似乎不是一個不好的解決方案。
答案是正確的,它適合你的暱稱:) – Vic
請參閱[此重複問題](http://stackoverflow.com/q/687444/5743988)。如果你在那裏找不到解決方案,可能是因爲'list()'是最好的方法。 – 4castle
我正在使用unix,那麼你可以在java中使用unix「ls -1 | wc -l」tric – Razib
不使用列表的原因是什麼?該答案可能有助於爲您提供正確的解決方案 – dganesh2002