Получение имен файлов всех файлов в папке

Возможный дубликат:
Читать все файлы в папке

Мне нужно создать список со всеми именами файлов в папке.

Например, если у меня есть:

000.jpg
012.jpg
013.jpg

Я хочу сохранить их в ArrayList с [000,012,013] как значения.

Какой лучший способ сделать это в Java?

PS: Я нахожусь в Mac OS X

Ответ 1

Вы можете сделать это так:

File folder = new File("your/path");
File[] listOfFiles = folder.listFiles();

    for (int i = 0; i < listOfFiles.length; i++) {
      if (listOfFiles[i].isFile()) {
        System.out.println("File " + listOfFiles[i].getName());
      } else if (listOfFiles[i].isDirectory()) {
        System.out.println("Directory " + listOfFiles[i].getName());
      }
    }

Вы хотите получить только файлы JPEG или все файлы?

Ответ 2

Создайте объект File, передав путь к конструктору конструктору. Используйте listFiles() для извлечения массива объектов File для каждого файла в каталоге, а затем вызовите метод getName(), чтобы получить имя файла.

List<String> results = new ArrayList<String>();


File[] files = new File("/path/to/the/directory").listFiles();
//If this pathname does not denote a directory, then listFiles() returns null. 

for (File file : files) {
    if (file.isFile()) {
        results.add(file.getName());
    }
}

Ответ 3

Здесь, как смотреть в документации.

Во-первых, вы имеете дело с IO, поэтому посмотрите java.io package.

Есть два класса, которые выглядят интересными: FileFilter и FileNameFilter. Когда я нажал на первый, он показал мне, что существует метод listFiles() в классе File. И документация для этого метода говорит:

Возвращает массив абстрактных путей обозначение файлов в каталоге обозначается этим абстрактным пустым именем.

Прокрутка в File JavaDoc, я вижу конструкторы. И это действительно все, что мне нужно, чтобы создать экземпляр File и вызвать listFiles() на нем. Прокручивая еще дальше, я могу увидеть некоторую информацию о том, как файлы называются в разных операционных системах.