2017-03-10 59 views
1

我有一個網絡驅動器上有一百萬個文件的目錄。如果我嘗試用如何在Java中迭代讀取目錄中的所有文件?

folder.listFiles() 

讀它,它會佔用大量的時間,直到生成的數組將填充文件。

我想通過一個接收文件並打印輸出進度。

我該如何在Java中做到這一點?

+2

HTTP://docs.oracl e.com/javase/7/docs/api/java/nio/file/DirectoryStream.html – Aubin

回答

2

你可以嘗試用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}"); 
0

您可以使用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) {} 
相關問題