Перечислите все файлы из каталога, соответствующие маске файла (также известной как шаблон или Glob).JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Перечислите все файлы из каталога, соответствующие маске файла (также известной как шаблон или Glob).

Сообщение Anonymous »

Я хочу перечислить все файлы в каталоге и подкаталогах внутри этого каталога, которые соответствуют маске файла.
Например, «M:\SOURCE\*.doc», а SOURCE может выглядеть так:

Код: Выделить всё

|-- SOURCE
|   |-- Folder1
|   |   |-- File1.doc
|   |   |-- File1.txt
|   |-- File2.doc
|   |-- File3.xml
Должен вернуть File1.doc и File2.doc.
Изначально я использую DirectoryStream, потому что это уже делает некоторые проверки синтаксиса маски/глоба, а также возможность использовать его для фильтрации, поскольку это НЕ просто какое-то регулярное выражение, а настоящая маска файла, которую обычному пользователю легче понять

Код: Выделить всё

Files.newDirectoryStream(path, mask);
Проблема в том, что DirectoryStream проверяет только указанный вами каталог с непосредственным путем, а не его подкаталоги
ЗАТЕМ появляется метод «сглаживания» с помощью Files.walk, который фактически может просматривать все подкаталоги, проблема в том, что он НЕ предоставляет возможности «фильтровать» по маску файла так же, как и DirectoryStream

Код: Выделить всё

Files.walk(path, Integer.MAX_VALUE);
Итак, я застрял, не имея возможности объединить лучшее из обоих методов...

Подробнее здесь: https://stackoverflow.com/questions/648 ... rn-or-glob
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»