Как перебирать файлы определенного каталога, в Java?

Возможный дубликат:
Лучший способ итерации через каталог в java?

Я хочу обрабатывать каждый файл в определенном каталоге с помощью Java.

Каков самый простой (и наиболее распространенный) способ сделать это?

Ответ 1

Если у вас есть имя каталога в 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.
  }

Ответ 2

Я думаю, существует так много способов сделать то, что вы хотите. Вот путь, который я использую. С помощью библиотеки 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"}

Ответ 3

Вот пример, в котором перечислены все файлы на моем рабочем столе. вы должны изменить переменную пути на свой путь.

Вместо того, чтобы печатать имя файла с помощью 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]);
        }
    }
}

Ответ 4

Используйте java.io.File.listFiles
Или
Если вы хотите отфильтровать список до итерации (или в более сложном случае использования), используйте apache-commons FileUtils. FileUtils.listFiles