1
我有一個網絡驅動器上有一百萬個文件的目錄。如果我嘗試用如何在Java中迭代讀取目錄中的所有文件?
folder.listFiles()
讀它,它會佔用大量的時間,直到生成的數組將填充文件。
我想通過一個接收文件並打印輸出進度。
我該如何在Java中做到這一點?
我有一個網絡驅動器上有一百萬個文件的目錄。如果我嘗試用如何在Java中迭代讀取目錄中的所有文件?
folder.listFiles()
讀它,它會佔用大量的時間,直到生成的數組將填充文件。
我想通過一個接收文件並打印輸出進度。
我該如何在Java中做到這一點?
你可以嘗試用DirectoryStream
:
Path dir = Paths.get("C:\\"); // directory to list
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path entry: stream) {
System.out.println(entry);
}
} catch (DirectoryIteratorException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
您也可以爲你的DirectoryStream
過濾器文件,如果你需要:所有你需要做的是一個參數添加到Files.newDirectoryStream
電話:
DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.{txt,png,jpg}");
您可以使用NIO.2 API:
try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(Paths.get("/path/to/directory"))) {
for (Path path : directoryStream) {
System.out.println(path.toString());
}
} catch (IOException ex) {}
HTTP://docs.oracl e.com/javase/7/docs/api/java/nio/file/DirectoryStream.html – Aubin