Есть метод, который проходит по папкам и подпапкам.
Если он встречает папку, то закидывает её в очередь, а если файл, то должен проверить его расширение, и если оно совпадает с введённым – вывести имя файла.
Но он у меня не работает. Я только учусь.
P.S.
Кусок с фильтром взял из интернета.
public static void walker(File rootPapka) {
ArrayList<File> allFiles = new ArrayList<>();
ArrayDeque<File> papky = new ArrayDeque<File>();
papky.add(rootPapka);
while (papky.peek() != null) {
File[] open = papky.getFirst().listFiles();
for (File entry : open) {
if (entry.isDirectory()) {
papky.add(entry);
} else {
String[] files = entry.list(new FilenameFilter() {
@Override public boolean accept(File folder, String name) {
return name.endsWith(".txt");
}
});
for ( String fileName : files ) {
System.out.println("File: " + fileName);
}
}
}
}
}
Если я правильно понял, то вам нужно вывести имена всех файлов в дереве каталогов. Для этого существуют удобные методы:
1) walkFileTree c созданием FileVisitor:
Files.walkFileTree(Paths.get("C:/folder"), new FileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if(file.getFileName().endsWith(".txt")) System.out.println("File: " + file.getFileName());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
});
2) walk с созданием Stream:
Files.walk(Paths.get("C:/folder"), FileVisitOption.FOLLOW_LINKS).forEach(file -> {
if (!file.toFile().isDirectory() && if(file.getFileName().endsWith(".txt"))) System.out.println(file.getFileName());
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть класс Alpha, у него String name QWERTY Есть Arraylist list Экземпляр туда добавлен, но вернуть его не могу
Вычитанием строк назовем операцию при которой все буквы вычитаемого вычеркиваются из уменьшаемого, а если в уменьшаемом таких букв не было...
Есть приложение на Spring boot 2, в котором пользователи авторизуюца и получают access keyКлиентская часть крутится на nodejs