2013-07-15 17 views
5

Tôi chọn tập tin trong java sử dụng đoạn mã sau:Chọn một loại tập tin trong java

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

Bây giờ phải làm gì nếu tôi muốn chỉ chọn tập tin hình ảnh?

Trả lời

11

Sử dụng một trong các phiên bản File.listFiles() chấp nhận FileFilter hoặc FilenameFilter để xác định tiêu chí phù hợp.

Ví dụ:

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

Bạn sẽ phải quyết định đó là một hình ảnh và những gì không. Một khi bạn đã làm điều này, sử dụng một vòng lặp để lọc là khá dễ dàng. –

+1

@PeterLawrey, _Bạn sẽ phải quyết định đó là một hình ảnh và những gì là not_, làm thế nào là khác với _define các tiêu chí phù hợp_? Mã xác định kết quả khớp có thể dễ dàng được chèn vào bộ lọc hoặc vòng lặp, tôi không chắc chắn cách thức được coi là tốt hơn so với bộ lọc khác. – hmjd

+0

có nó hoạt động tốt nhất cho tôi. Cảm ơn rất nhiều – insanity

4

Bạn có thể sử dụng File.listFiles() với một FilenameFilter sử dụng 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

May mã này giúp bạn

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