Primary tabs
![]()
Forums:
поставим задачу конкретней — хотим получить из указанной директории список файлов с расширением .txt
Для это — прежде всего
далее в том месте — где мы планируем исполнять код выводящий список имеющихся файлов в стандартный поток вывода напишем примерно такой код:
это выведет пути к подходящим нам файлам в стандартный поток вывода.
материалы в помощь =
Ну и возвращаемся к нашей задаче.
Темы в помощь =
В своём проекте projectDir/src/main/resources я создал дополнительную папку myFolderName, в которой у меня лежат файлы .xml , и я хочу взять список файлов, которые лежат в этой папке.
Нашел вот такой код, но не знаю, какой путь нужно туда передать:
Вопрос: каким образом я могу взять список файлов, которые лежат в директории projectDir/src/main/resources/myFolderName ?
Как читать все файлы в папке через Java?
29 ответов
файлы.прогулка API доступен из Java 8.
пример использования try-with-resources шаблон рекомендуется в руководстве API. Это гарантирует, что независимо от обстоятельств поток будет закрыт.
в Java 8, вы можете сделать это
который будет печатать все файлы в папке, исключая все каталоги. Если вам нужен список, выполните следующие действия:
если вы хотите вернуть List вместо List
просто карта это:
вы также должны убедиться, чтобы закрыть поток! В противном случае вы можете столкнуться с исключением, сообщающим вам, что слишком много файлов открыты. Читать здесь для получения дополнительной информации.
все ответы на этот вопрос, которые используют новые функции Java 8, пренебрегают закрытием потока. Примером в принятом ответе должно быть:
из javadoc Files.walk способ:
возвращаемый поток инкапсулирует один или несколько DirectoryStreams. Если своевременное избавление ресурсов файловой системы необходимо, конструкция try-with-resources должна использоваться для обеспечения метод close stream вызывается после потоковые операции завершены.
просто пройдите через все файлы, используя Files.walkFileTree (Java 7)
вы также можете создать фильтр, который затем может быть передан в newDirectoryStream способ выше
Если вы хотите больше опций, вы можете использовать эту функцию, которая направлена на заполнение arraylist файлов, присутствующих в папке. Варианты : recursivility и шаблон, чтобы соответствовать.
хорошее использование java.io.FileFilter Как видно на https://stackoverflow.com/a/286001/146745
Я думаю, что это хороший способ прочитать все файлы в папке и подпапке
простой пример, который работает с Java 1.7 рекурсивно список файлов в каталогах, указанных в командной строке:
хотя я согласен с Ричем, Орианом и остальными для использования:
почему-то все примеры здесь используется абсолютное путь (т. е. полностью от корня или, скажем, буквы диска (C:) для windows..)
Я хотел бы добавить, что можно использовать относительные путь-хорошо. Итак, если вы pwd (текущий каталог / папка) является folder1, и вы хотите разобрать folder1 / subfolder, вы просто пишете (в коде выше вместо ):
вот безопасное решение, хотя и не такое элегантное, как Java 8 Files.walk(..) :
список файлов из тестовой папки в пути к классу
вы можете фильтровать любые текстовые файлы или любое другое расширение ..просто замените его .MP3
чтобы расширить принятый ответ, я сохраняю имена файлов в ArrayList (вместо того, чтобы просто сбрасывать их в систему.из.println) я создал вспомогательный класс «MyFileUtils», чтобы он мог быть импортирован другими проектами:
я добавил полный путь к имени файла. Вы бы использовали его так:
ArrayList передается «value», но значение используется для указания на тот же объект ArrayList, живущий в куче JVM. Таким образом, каждый вызов рекурсии добавляет имена файлов в тот же ArrayList (мы не создаем новый ArrayList при каждом рекурсивном вызове).
есть много хороших ответов выше, вот другой подход: в проекте maven все, что вы помещаете в папку ресурсов, копируется по умолчанию в папку target/classes. Чтобы узнать, что доступно во время выполнения
Теперь, чтобы получить файлы из определенной папки, предположим, у вас есть папка с именем «res» в папке ресурсов, просто замените:
Если вы хотите иметь доступ в ваш com.пакет «название» тут:
Это будет читать указанные файлы расширения файла в заданном пути (также выглядит вложенные папки)