2016-06-18 18 views
2

FilenameFilterクラスを使用して、特定の拡張子を持つすべてのファイルをディレクトリにリストしています。しかし、私はまた、そのディレクトリ内のすべてのディレクトリをリストしたいと思います。 インターネットで検索し、FilenameFilterを複数の内線番号に使用する方法のみを調べました。しかし、どうすればディレクトリでもそれを行うことができますか?ここでFilename特定の拡張子とディレクトリを持つリストファイルを表示するフィルタ

は、私はすべての.txtファイルを一覧表示するために使用するコードです:

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

も、フィルタを介してそれを行うための方法があるか、私はいくつかの他の方法でそれをしなければならないのですか?

答えて

2

を何かを追加することができ、このコード

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()); 
      } 
     } 

を使用しています。特に、java.io.FileFilterはあなたがisDirectory()を使用して、ディレクトリをテストすることができ、あなたFilenameFilterよりも柔軟性を与える:

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

私はあなたがこれを行うための多くの方法を持っているPNGまたはJPGを変更したり、それらに

+0

あなたは、ファイル名に複数のドットを持っている場合、これは壊れます。さらに、質問のディレクトリ部分には答えていません。 –

+2

これはfileName.lastIndexOf( "。")+ 1、f.getName()を破らないと思います。length() –

+0

これで問題はありません。文字列の終わりが暗示されているので、 'substring'の2番目の引数を省略することもできます(https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int))。 。 –

関連する問題