5

我正在使用以下代码在 java 中选择文件:

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

现在如果我只想选择图像文件怎么办?

4

3 回答 3

11

File.listFiles()使用接受FileFilteror的版本之一FilenameFilter来定义匹配条件。

例如:

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)$");
            //
        };
    });
于 2013-07-15T11:09:30.020 回答
4

您可以使用File.listFiles()FilenameFilter使用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());
   }
});
于 2013-07-15T11:13:10.763 回答
1

愿此代码对您有所帮助

         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;
                }
            }
        }
于 2013-07-15T11:18:54.720 回答