Java程序来获取具有特定扩展名的文件

时间:2020-01-09 10:35:32  来源:igfitidea点击:

在本文中,我们将看到一个Java程序,用于从目录中获取具有特定扩展名的所有文件。

Java中的FileNameFilter接口

在FilenameFilter接口中,有方法accept()。

accept(File dir,String name)–测试指定的文件是否应该包含在文件列表中。

通过实现此方法,我们可以测试传递的目录中的每个文件。如果文件具有所需的扩展名,则将其包括在内,否则丢弃。

另一点是如何将具有给定扩展名的文件包括在列表中,因为有一个File.list()方法采用FilenameFilter的实例。

String [] list(FilenameFilter filter)–返回一个字符串数组,用于命名此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

Java程序查找具有特定扩展名的文件

借助这些背景信息,我们可以编写一个Java程序来获取给定目录中所有扩展名为" .txt"的文件。

FileNameFilter是一个功能接口,这意味着它也可以作为lambda表达式实现。以下Java程序将FileNameFilter实现为lambda表达式。

public class FilteredFiles {
  public static void main(String[] args) {
    // Folder from which files are fetched
    File file = new File("F:\theitroad");
    // Implemented as lambda. filter all the files
    // having .txt extension
    File[] fileList = file.listFiles((d,f)-> f.toLowerCase().endsWith(".txt"));
    // Listing all the included files
    for(File f : fileList) {
      System.out.println(f.getAbsolutePath());
    }
  }
}

通过将FileNameFilter实现为匿名类可以完成相同的操作。

public class FilteredFiles {
  public static void main(String[] args) {
    // Folder from which files are fetched
    File file = new File("F:\theitroad");
    // Implemented as lambda. filter all the files
    // having .txt extension
    File[] fileList = file.listFiles(new FilenameFilter() {			
      @Override
      public boolean accept(File dir, String name) {
        if(name.toLowerCase().endsWith(".txt"))
          return true;
        else 
          return false;
      }
    });
							
    // Listing all the included files
    for(File f : fileList) {
      System.out.println(f.getAbsolutePath());
    }
  }
}