Java FilenameFilter示例 – 查找/删除某些扩展名的文件

很多时候,我们需要遍历并查找具有特定扩展名的所有文件,而对它们进行某些操作(例如删除它们)就只能进行。 如果您希望在一定时间后使用应用程序从日志文件夹中删除所有日志文件(如果存在此要求),则通常需要执行此操作。

在 Java 中,您可以使用FilenameFilter并覆盖它的accept(File targetDirectoty, String fileName)方法,以对参数目录内的所有文件执行文件过滤。

在此示例中,我将使用FilenameFilter列出文件夹“c:\\temp"中所有以.log扩展名结尾的文件,然后删除所有日志文件。

package com.howtodoinjava.examples.io;

import java.io.File;
import java.io.FilenameFilter;

public class FilenameFilterExample 
{
	public static void main(String[] args) 
	{
		//Delete all files from this directory
		String targetDirectory = "c:\\temp";
		File dir = new File(targetDirectory);

		//Filter out all log files
		String[] logFiles = dir.list(new LogFilterFilter());

		//If no log file found; no need to go further
		if (logFiles.length == 0)
			return;

		//This code will delete all log files one by one
		for (String log : logFiles) 
		{
			String tempLogFile = new StringBuffer(targetDirectory).append(File.separator).append(log).toString();
			File fileDelete = new File(tempLogFile);
			boolean isdeleted = fileDelete.delete();
			System.out.println("file : " + tempLogFile + " is deleted : " + isdeleted);
		}
	}
}

//This filter will be used to check for all files if a file is log file
class LogFilterFilter implements FilenameFilter 
{
	@Override
	public boolean accept(File dir, String fileName) 
	{
		return (fileName.endsWith(".log"));
	}
}