Java FileFilter示例

Java FileFilter示例

原文: https://howtodoinjava.com/java/io/java-io-filefilter-example-tutorial/

有时我们会遇到这样的情况:必须在目录中处理特定类型的文件。 IO 包中提供java.io.FileFilter类仅用于这些目的。 让我们看一个简单的例子。 没什么复杂的。

让我们看一下FileFilter接口的源代码。 它仅包含一个方法,该方法将File实例作为参数,并根据文件满足所需条件返回true/false。

public interface FileFilter
{
   public abstract boolean accept(File file);
}

在此示例中,我正在构建FileFilter的实例,该实例可用于从指定目录中过滤掉.log 文件。 让我们看一下FileFilter实例的实现代码。

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

上面的accept方法检查文件扩展名; 如果是.log,则将其视为日志文件,并且方法返回true;否则,方法返回false

现在来看FileFilter的工作示例。

import java.io.File;
import java.io.FileFilter;

public class IOUtils
{
   public void getFiles(String dir)
   {
      File directory = new File(dir);
      //Verify if it is a valid file name
      if (!directory.exists())
      {
         System.out.println(String.format("Directory %s does not exist", dir));
         return;
      }
      //Verify if it is a directory and not a file path
      if (!directory.isDirectory())
      {
         System.out.println(String.format("Provided value %s is not a directory", dir));
         return;
      }
      File[] files = directory.listFiles(logFilefilter);
      //Let's list out the filtered files
      for (File f : files)
      {
         System.out.println(f.getName());
      }
   }

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

   //Test the file filtering                         
   public static void main(String[] args)
   {
      IOUtils ioUtils = new IOUtils();
      ioUtils.getFiles("C:\\temp");
   }
}

Output:

test.log
test1.log

上面的程序将列出“c:/temp”文件夹中的所有日志文件。

您可以构建自己的文件过滤器实例并实现自己的规则。 其余逻辑保持不变。

祝您学习愉快!