Как заменить File.listFiles(фильтр FileFilter) на nio в Java 7?
У меня есть некоторый код обхода файлового ввода / вывода, написанный на Java 6, пытающийся переместить его в новый ввод / вывод в Java 7, но я не могу найти замену для такого рода вещей.
File[] files = dir.listFiles(AudioFileFilter.getInstance());
А именно, нет способа фильтровать пути только по файлам, и он возвращает список файлов, поэтому мне пришлось бы преобразовывать каждый файл в путь (file.toPath), если бы я хотел ограничить использование File в вызываемых им методах, что кажется довольно трудоемким,
Я посмотрел на FileVisitor, но, похоже, это не позволяет вам контролировать прохождение дерева, поэтому я не думаю, что оно будет работать для меня.
Итак, сколько заменится путь к файлу в Java 7?
1 ответ
Использование файлов #newDirectoryStream и DirectoryStream.Filter
Вот код:
DirectoryStream<Path> stream = Files.newDirectoryStream(dir, new DirectoryStream.Filter<Path>() {
@Override
public boolean accept(Path entry) throws IOException
{
return Files.isDirectory(entry);
}
});
for (Path entry: stream) {
...
}
Кстати, я упустил обработку исключений в приведенном выше коде для простоты.