2013-07-15 15 views
5

ich Dateien in Java bin Auswahl mit dem folgenden Code:auswählen

File folder = new File("path to folder"); 
    File[] listOfFiles = folder.listFiles(); 

, was nun tun, wenn ich nur Bilddateien auswählen möchten?

Antwort

11

Verwenden Sie eine der Versionen File.listFiles(), die eine oder FilenameFilter akzeptiert, um die übereinstimmenden Kriterien zu definieren.

Zum Beispiel:

File[] files = folder.listFiles(
    new FilenameFilter() 
    { 
     public boolean accept(final File a_directory, 
           final String a_name) 
     { 
      return a_name.endsWith(".jpg"); 
      // Or could use a regular expression: 
      // 
      //  return a_name.toLowerCase().matches(".*\\.(gif|jpg|png)$"); 
      // 
     }; 
    }); 
+0

Sie müssen entscheiden, welches ein Bild ist und was nicht. Sobald Sie dies getan haben, ist die Verwendung einer Schleife zum Filtern ziemlich einfach. –

+1

@PeterLawrey, _Sie müssen entscheiden, was ein Bild ist und was nicht_ ist, wie unterscheidet sich das von _defining die passenden Kriterien_? Der Code, der die Übereinstimmung definiert, kann genauso einfach in einen Filter oder eine Schleife eingefügt werden. Ich bin mir nicht sicher, wie man den anderen besser findet. – hmjd

+0

ja es funktioniert am besten für mich. Vielen Dank – insanity

4

Sie File.listFiles() können mit einem FilenameFilterImageIO.getReaderFileSuffixes

File[] files = dir.listFiles(new FilenameFilter() { 

    public boolean accept(File dir, String name) { 
     List<String> images = Arrays.asList(ImageIO.getReaderFileSuffixes()); 

     String extension = ""; 
     int i = name.lastIndexOf('.'); 
     if (i > 0) { 
     extension = name.substring(i+1); 
     } 

     return images.contains(extension.toLowerCase()); 
    } 
}); 
1

mit Mai dieses Codes helfen Ihnen

  String imageExtension[] = new String[]{ 
      "jpg", "png", "bmp" // add more 
     }; 
     File direcory = new File("path"); 
     File[] listFiles = direcory.listFiles(); 
     ArrayList<File> imageFileList = new ArrayList(); 
     for(File aFile : listFiles) { 
      // use FilenameUtils.getExtension from Apache Commons IO 
      String extension = FilenameUtils.getExtension(aFile.getAbsolutePath()); 
      for(String ext: imageExtension) { 
       if(extension.equals(ext)) { 
        imageFileList.add(aFile); 
        break; 
       } 
      } 
     }