2013-07-15 7 views

risposta

11

Utilizzare una delle versioni di File.listFiles() che accetta uno FileFilter o FilenameFilter per definire i criteri di corrispondenza.

Ad esempio:

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

Dovrai decidere quale è un'immagine e cosa no. Una volta fatto questo, usare un loop per filtrare è abbastanza facile. –

+1

@PeterLawrey, _Dovrai decidere quale è un'immagine e cosa no_, in che modo è diverso da _define i criteri di corrispondenza_? Il codice che definisce la corrispondenza può essere inserito altrettanto facilmente in un filtro o in un ciclo, non sono sicuro di come uno sia ritenuto migliore dell'altro. – hmjd

+0

sì, funziona meglio per me. Grazie mille – insanity

4

È possibile utilizzare File.listFiles() con un FilenameFilter utilizzando ImageIO.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

maggio questo codice aiuto

  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; 
       } 
      } 
     } 
Problemi correlati