判断文件是否在指定目录的小工具

本文介绍了一个实用的Java工具类——FileUtil,它能够帮助开发者在指定目录及其子目录中搜索特定名称的文件。通过递归遍历目录结构,该工具可以高效地定位目标文件,为文件管理和应用程序开发提供便利。

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

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



/**
 * <p>Usage: 文件操作常用工具 </p>
 * <P>File:    FileUtil.java</P>
 * @author  caimaof
 * @version 1.0 2009-2-5-下午01:32:23
 */
public class FileUtil {
	
	
	/**
	 * 输入目录名和想要查找的文件的名字,程序将判断在当前目录里是否有以所给文件名命名的文件
	 * @param dirName 目录名
	 * @param fileName 文件名
	 * @param isSubDirInclude 是否包含子目录
	 * @return 文件是否存在于当前目录及其子目录
	 */
	public boolean isFileInDir(String dirName, String fileName,boolean isSubDirInclude) {
		boolean isExists = false;
		File file = new File(dirName);
		FilenameFilter fl = new Filter(fileName);
		if (file.isDirectory()) {
			if (file.list(fl).length > 0) {
				isExists = true;
				return isExists;
			} else if(isSubDirInclude){
				//当需要搜索子目录时启用
				String[] fileList = file.list();

				if (isFileExist(file, fileList, fl)) {
					return true;
				}
			}
		}

		return isExists;
	}
	
	
	/**
	 * 用于迭代当前目录下的所有的目录和文件
	 * @param file
	 * @param fileList
	 * @param fl
	 * @return 文件是否存在于当前目录
	 */
	private boolean isFileExist(File file, String[] fileList, FilenameFilter fl) {
		boolean isExists = false;
		for (int i = 0; i < fileList.length; i++) {
			File newFile = new File(file.getAbsolutePath() + "\\" + fileList[i]);
			if (newFile.isDirectory() && newFile.list(fl).length > 0) {
				return true;

			} else {
				if (newFile.isDirectory()) {
					if (isFileExist(newFile, newFile.list(), fl)) {
						return true;
					}
				}
			}
		}
		return isExists;
	}

	
}
/**
 * <p>Usgae: 用于过滤文件名以给定文件名开始</p>
 * <P>File:    FileUtil.java</P>
 * @author  caimaof
 * @version 1.0 2009-2-5-下午01:39:33
 */
class Filter implements FilenameFilter {

	String fileName;

	public Filter(String fileName) {
		this.fileName = fileName;
	}
	
	public boolean accept(File dir, String name) {
		return name.startsWith(fileName);
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值