Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何迭代某个目录的文件?_Java_File_Directory - Fatal编程技术网

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

在Java中,如何迭代某个目录的文件?,java,file,directory,Java,File,Directory,可能重复: 我想使用Java处理特定目录中的每个文件 最简单(也是最常见)的方法是什么?如果您在myDirectoryPath中有目录名 import java.io.File; ... File dir = new File(myDirectoryPath); File[] directoryListing = dir.listFiles(); if (directoryListing != null) { for (File child : directoryListi

可能重复:

我想使用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.
  }

下面是一个示例,列出了我桌面上的所有文件。您应该将path变量更改为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]);
        }
    }
}
publicstaticvoidmain(字符串[]args){
文件路径=新文件(“c:/documents and settings/Zachary/desktop”);
File[]files=path.listFiles();
对于(int i=0;i
使用

或者
如果您想在迭代之前过滤列表(或任何更复杂的用例),请使用apache commons FileUtils

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

您可以在此处找到相关信息:

下面是一个例子:

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

如果要筛选,可以更改
null
,并放置扩展名列表。示例:
{.xml“,.java”}

重复的:这是重复的,但不是关于深度遍历的问题(“包括所有子目录中的文件)。请参阅。如果您只想进行筛选,则重写
listFiles
以获取文件筛选器或文件名筛选器,因此无需使用apache commons。尽管它是一个很好的库。@john assymptoth,如果没有此库和java实现的util,如果库中包含在最新版本(2.6)的
commons.io
中,您的调用看起来像
FileUtils.iterateFiles(新文件(“C:/”,null,null)
(忽略子目录)或例如
FileUtils.iterateFiles(新文件(“C:/”,新后缀文件过滤器(.java”),null)
在文件扩展名上应用筛选器。Javado在listFiles()中说:“结果中不包括表示目录本身和目录父目录的路径名。”仅供参考,如果需要当前文件夹,可以使用`new file(“.”;'