2016-06-18 3 views
2

Я использую класс FilenameFilter для перечисления всех файлов с определенным расширением в каталоге. Но я также хотел бы перечислить все каталоги в этом каталоге. Я искал в Интернете и узнал, как использовать FilenameFilter для нескольких расширений. Но как я могу это сделать и с каталогами?FilenameFilter для отображения файлов списка с определенными расширениями и каталогами

Вот код, который я использую, чтобы перечислить все файлы с расширением .txt:

File[] listOfFiles = folder.listFiles(new FilenameFilter() { 
     public boolean accept(File dir, String name) { 
      return name.toLowerCase().endsWith(".txt"); 
     } 
    }); 

Есть даже способ сделать это с помощью фильтра или мне придется делать это в какой-то другой способ?

ответ

2

У вас есть много способов сделать это. В частности, java.io.FileFilter дает большую гибкость, чем FilenameFilter, что позволяет проверить для каталогов с помощью isDirectory():

File[] listOfFiles = folder.listFiles(new FileFilter() { 
      @Override 
      public boolean accept(File pathname) { 
       return pathname.getName().toLowerCase().endsWith(".txt") 
        || pathname.isDirectory(); 
      } 
     }); 
1

Я использую этот код

for(File f : Folder.listFiles()){ 
      String fileName = f.getName(); 
      String fileExtension = fileName.substring(fileName.indexOf(".") + 1, f.getName().length()); 
      fileExtension = fileExtension.toLowerCase(); 
      if(fileExtension.equals("png") || fileExtension.equals("jpg")){ 
       System.out.println(f.getName()); 
      } 
     } 

Вы можете изменить PNG или JPG или добавить что-то к ним

+0

Это сломается, если у вас есть несколько точек в имени файла. Кроме того, вы не отвечаете на часть каталога вопроса. –

+2

Я думаю, что это не сломает fileName.lastIndexOf (".") + 1, f.getName(). Length() –

+0

Все должно быть хорошо. Вы можете даже опустить второй аргумент в 'substring', потому что подразумевается конец строки (https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int)) , –

Смежные вопросы