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

> 原文： [https://howtodoinjava.com/java/io/how-to-find-delete-files-of-certain-extension-filenamefilter-example/](https://howtodoinjava.com/java/io/how-to-find-delete-files-of-certain-extension-filenamefilter-example/)

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

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

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

```java
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"));
	}
}

```

**祝您学习愉快！**