web-dev-qa-db-ja.com

Javaで特定のディレクトリのファイルを反復処理する方法は?

可能性のある複製:
javaのディレクトリを反復処理する最良の方法?

Javaを使用して特定のディレクトリ内の各ファイルを処理したい。

これを行う最も簡単な(そして最も一般的な)方法は何ですか?

97
John Assymptoth

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.
  }
168
Mike Samuel

私はあなたが望むものを作るために非常に多くの方法があると思います。これが私が使用する方法です。 commons.ioライブラリを使用すると、ディレクトリ内のファイルを反復処理できます。 FileUtils.iterateFilesメソッドを使用する必要があり、各ファイルを処理できます。

ここで情報を見つけることができます: 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"}

32
jomaora

デスクトップ上のすべてのファイルを一覧表示する例を次に示します。パス変数をパスに変更する必要があります。

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]);
        }
    }
}
9
WuHoUnited

Java.io.File.listFiles を使用します
または
繰り返し(またはより複雑なユースケース)の前にリストをフィルタリングする場合は、Apache-commons FileUtilsを使用します。 FileUtils.listFiles

5
Amol Katdare