Java如何根据扩展名过滤文件

Java java.io.FileFilter类是抽象路径名的过滤器。
它只有一个方法来测试指定的抽象路径名是否应该包含在路径名列表中。

当且仅当路径名应包含在列表中时,它才返回 true

boolean	accept(File pathname)

示例:创建 FileFilter 实例

给定的 accept() 方法检查文件扩展名;如果它是 .log,则返回 true否则方法返回 false

//create a FileFilter and override its accept-method
FileFilter logFilefilter = new FileFilter() 
{
	  //Override accept method
	  public boolean accept(File file) {

			 //if the file extension is .log return true, else false
			 if (file.getName().endsWith(".log")) {
				return true;
			 }
			 return false;
	  }
};
www. On IT Road .com

示例: Java 查找目录中的所有日志文件

File[] listFiles(FileFilter filter) :返回一组抽象路径名,表示满足指定过滤器的文件和目录。

import java.io.File;
import java.io.FileFilter;
public class IOUtils
{
   public static void main(String[] args)
   {
      IOUtils ioUtils = new IOUtils();
      ioUtils.getFiles("C:\temp");
   }
   
   
   public void getFiles(String dir)
   {
      File directory = new File(dir);
      // 检查目录是否存在
      if (!directory.exists())
      {
         System.out.println(String.format("目录 %s 不存在", dir));
         return;
      }
      // 检查是目录还是文件
      if (!directory.isDirectory())
      {
         System.out.println(String.format(" %s 不是一个目录", dir));
         return;
      }
      File[] files = directory.listFiles(logFilefilter);
	  
      // 打印过滤后的所有文件
      for (File f: files)
      {
         System.out.println(f.getName());
      }
   }
   // 设置过滤器
   FileFilter logFilefilter = new FileFilter() {
      // 过滤出所有的log文件
      public boolean accept(File file) {
        
         if (file.getName().endsWith(".log")) {
            return true;
         }
         return false;
      }
   };
}

上面的程序将列出 c:/temp文件夹中所有的 .log文件。

日期:2020-09-17 00:09:21 来源:oir作者:oir