如何在Java中迭代某个目录的文件?

可能重复:
最好的方法来遍历java中的目录?

我想用Java处理每个文件在一个特定的目录。

什么是最简单(也是最常见)的方式呢?

如果您在myDirectoryPath有目录名称,

 import java.io.File; ... File dir = new File(myDirectoryPath); File[] directoryListing = dir.listFiles(); if (directoryListing != null) { for (File child : directoryListing) { // Do something with child } } else { // Handle the case where dir is not really a directory. // Checking dir.isDirectory() above would not be sufficient // to avoid race conditions with another process that deletes // directories. } 

我想有很多方法可以做出你想要的。 这是我使用的一种方法。 使用commons.io库,您可以迭代目录中的文件。 您必须使用FileUtils.iterateFiles方法,您可以处理每个文件。

你可以在这里find这个信息: http : //commons.apache.org/proper/commons-io/download_io.cgi

这是一个例子:

 Iterator it = FileUtils.iterateFiles(new File("C:/"), null, false); while(it.hasNext()){ System.out.println(((File) it.next()).getName()); } 

如果您想过滤,您可以更改null并放置一个扩展列表。 例如: {".xml",".java"}

这是一个列出我的桌面上的所有文件的例子。 你应该改变pathvariables到你的path。

而不是用System.out.println打印文件的名字,你应该把自己的代码放在文件上。

 public static void main(String[] args) { File path = new File("c:/documents and settings/Zachary/desktop"); File [] files = path.listFiles(); for (int i = 0; i < files.length; i++){ if (files[i].isFile()){ //this line weeds out other directories/folders System.out.println(files[i]); } } } 

使用java.io.File.listFiles
要么
如果要在迭代之前过滤列表(或者更复杂的用例),请使用apache-commons FileUtils。 FileUtils.listFiles