【问题标题】:Select a particular type of file in java在java中选择特定类型的文件
【发布时间】:2013-07-13 05:37:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: java image file


    【解决方案1】:

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

    例如:

    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)$");
                //
            };
        });
    

    【讨论】:

    • 您必须决定哪些是图像,哪些不是。完成此操作后,使用循环进行过滤非常容易。
    • @PeterLawrey,你必须决定哪个是图像,哪个不是,这与定义匹配标准有什么不同?定义匹配的代码可以很容易地插入过滤器或循环中,我不确定如何认为其中一个比另一个更好。
    • 使用循环更短更简单。
    【解决方案2】:

    您可以将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());
       }
    });
    

    【讨论】:

      【解决方案3】:

      希望这段代码对你有帮助

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-11
        • 1970-01-01
        • 2011-11-26
        • 2018-07-30
        • 1970-01-01
        • 2021-09-29
        • 2018-10-27
        • 1970-01-01
        相关资源
        最近更新 更多