Java FileNameFilter示例

本文介绍了Java中FilenameFilter接口的使用,用于在使用`list`方法时过滤目录中的文件名。通过实现FilenameFilter接口,可以指定筛选特定扩展名的文件。从Java 8开始,FilenameFilter成为了一个功能接口,可以用lambda表达式简化代码。文中提供了具体示例,展示了如何使用自定义的FileNameFilter以及使用lambda表达式的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java FilenameFilter interface can be implemented to filter file names when File class listFiles() method is used.

使用FilelistFiles()方法时,可以实现Java FilenameFilter接口来过滤文件名。

Java FilenameFilter (Java FilenameFilter)

Java FileNameFilter interface has method boolean accept(File dir, String name) that should be implemented and every file is tested for this method to be included in the file list.

Java FileNameFilter 接口具有应实现的boolean accept(File dir, String name)方法boolean accept(File dir, String name) ,并且针对此方法测试每个文件,以将其包括在文件列表中。

From Java 8 onwards, FileNameFilter is a functional interface since it has a single method.

java filenamefilter example

从Java 8开始,FileNameFilter是一个功能接口,因为它具有单个方法。

Java FilenameFilter示例 (Java FilenameFilter Example)

We can use FilenameFilter in java to find all the files of a specific extension in a directory. Below is the program showing how to use FileNameFilter in java.

我们可以在Java中使用FilenameFilter在目录中查找特定扩展名的所有文件。 以下是显示如何在Java中使用FileNameFilter的程序。

package com.journaldev.files;

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

public class FileNameFilterExample {

	public static void main(String[] args) {
		String dir = "/Users/pankaj/temp";
		String extension = ".doc";
		findFiles(dir, extension);
	}

	private static void findFiles(String dir, String extension) {
		File file = new File(dir);
		if (!file.exists())
			System.out.println(dir + " Directory doesn't exists");
		File[] listFiles = file.listFiles(new MyFileNameFilter(extension));
		// File[] listFiles = file.listFiles((d, s) -> {
		// return s.toLowerCase().endsWith(extension);
		// });

		if (listFiles.length == 0) {
			System.out.println(dir + "doesn't have any file with extension " + extension);
		} else {
			for (File f: listFiles)
				System.out.println("File: " + dir + File.separator + f.getName());
		}
	}

	// FileNameFilter implementation
	public static class MyFileNameFilter implements FilenameFilter {

		private String extension;

		public MyFileNameFilter(String extension) {
			this.extension = extension.toLowerCase();
		}

		@Override
		public boolean accept(File dir, String name) {
			return name.toLowerCase().endsWith(extension);
		}

	}

}

MyFileNameFilter class implements FilenameFilter interface and accept method checks if the file name ends with specific extension or not. In the main method, we are invoking findFiles method that is using MyFileNameFilter to list xml files only. Note that MyFileNameFilter is written in a way to ignore case while checking for file extension.

MyFileNameFilter类实现FilenameFilter接口,accept方法检查文件名是否以特定扩展名结尾。 在main方法中,我们正在调用findFiles方法,该方法使用MyFileNameFilter仅列出xml文件。 请注意,以检查文件扩展名时忽略大小写的方式编写了MyFileNameFilter。

具有lambda表达式的Java中的FileNameFilter (FileNameFilter in java with lambda expression)

Since FileNameFilter is a functional interface, we can reduce the above code by using a lambda expression. We won’t need to write the implementation at all.

由于FileNameFilter是一个功能接口 ,因此我们可以使用lambda表达式来减少上述代码。 我们根本不需要编写实现。

Below is the code to use the FileNameFilter with a lambda expression.

以下是将FileNameFilter与lambda表达式结合使用的代码。

File[] listFiles = file.listFiles((d, s) -> {
	return s.toLowerCase().endsWith(extension);
});

That’s all for java FileNameFilter example. I hope it will help you in listing files in a directory using some criteria.

这就是java FileNameFilter示例的全部内容。 我希望它可以帮助您使用某些条件列出目录中的文件。

GitHub Repository. GitHub存储库中签出更多Java IO示例。

翻译自: https://www.journaldev.com/845/java-filenamefilter-example

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值