java遍历目录(按类型查找+按文件名查找)

本文介绍了一个Java程序,该程序能够遍历指定目录下特定类型的文件,并将相关信息记录到文本文件中。支持按文件类型、文件名搜索以及指定文件类型中的文件名搜索,同时可以排除某些子目录。

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

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class BianLiDir {

	static void ListFilesInDirByType(String findDir, String fileType,
			String saveDir, String[] exceptDirNames) {

		String saveFileName = fileType + ".txt";
		File file = new File (findDir);
		File[] files = file.listFiles ();

		for (int a = 0; a < files.length; a++) {
			File fl = files[a];
			String fileName = fl.getName ();
			if (fl.isDirectory ()) {
				for (String exceptDirName : exceptDirNames) {
					if (fileName.equals (exceptDirName)) {
						continue;
					}
				}
				ListFilesInDirByType (fl.toString (), fileType, saveDir,
						exceptDirNames);
			} else {
				if (!(fileName.endsWith ("." + fileType))) {
					continue;
				}
				addContentToFile (saveDir, saveFileName, findDir + "|");

				long B = fl.length ();

				long size = 0;
				String danWei = "";
				if (B < 1024) {
					size = B;
					danWei = "B";
				} else if (B >= 1024 && B < 1024 * 1024) {
					size = B / 1024;
					danWei = "KB";
				} else if (B >= 1024 * 1024 && B < 1024 * 1024 * 1024) {
					size = B / 1024 / 1024;
					danWei = "MB";
				} else if (B >= 1024 * 1024 * 1024
						&& B < 1024 * 1024 * 1024 * 1024) {
					size = B / 1024 / 1024 / 1024;
					danWei = "GB";
				}

				addContentToFile (saveDir, saveFileName, fileName + "|" + size
						+ danWei + "\n");
			}
		}
	}

	static void ListFilesInDirByName(String findDir, String saveDir,
			String searchContent, String[] exceptDirNames) {

		String saveFileName = searchContent + ".txt";

		File file = new File (findDir);
		File[] files = file.listFiles ();

		for (int a = 0; a < files.length; a++) {
			File fl = files[a];
			String fileName = fl.getName ();
			if (fl.isDirectory ()) {
				for (String exceptDirName : exceptDirNames) {
					if (fileName.equals (exceptDirName)) {
						continue;
					}
				}
				ListFilesInDirByName (fl.toString (), saveDir, searchContent,
						exceptDirNames);
			} else {
				if (!(fileName.contains (searchContent))) {
					continue;
				}
				addContentToFile (saveDir, saveFileName, findDir + "|");

				long B = fl.length ();

				long size = 0;
				String danWei = "";
				if (B < 1024) {
					size = B;
					danWei = "B";
				} else if (B >= 1024 && B < 1024 * 1024) {
					size = B / 1024;
					danWei = "KB";
				} else if (B >= 1024 * 1024 && B < 1024 * 1024 * 1024) {
					size = B / 1024 / 1024;
					danWei = "MB";
				} else if (B >= 1024 * 1024 * 1024
						&& B < 1024 * 1024 * 1024 * 1024) {
					size = B / 1024 / 1024 / 1024;
					danWei = "GB";
				}

				addContentToFile (saveDir, saveFileName, fileName + "|" + size
						+ danWei + "\n");
			}
		}
	}

	static void ListFilesInDirByNameInSomeType(String findDir, String saveDir,
			String searchContent, String[] fileTypes, String[] exceptDirNames) {

		String saveFileName = searchContent + ".txt";

		File file = new File (findDir);
		File[] files = file.listFiles ();

		for (int a = 0; a < files.length; a++) {
			File fl = files[a];
			String fileName = fl.getName ();
			if (fl.isDirectory ()) {
				for (String exceptDirName : exceptDirNames) {
					if (fileName.equals (exceptDirName)) {
						continue;
					}
				}
				ListFilesInDirByNameInSomeType (fl.toString (), saveDir,
						searchContent, fileTypes, exceptDirNames);
			} else {
				boolean type = false;
				for (String fileType : fileTypes) {
					if (fileName.endsWith ("." + fileType)) {
						type = true;
						break;
					}
				}

				if (type == false) {
					continue;
				}

				if (!(fileName.contains (searchContent))) {
					continue;
				}
				addContentToFile (saveDir, saveFileName, findDir + "|");

				long B = fl.length ();

				long size = 0;
				String danWei = "";
				if (B < 1024) {
					size = B;
					danWei = "B";
				} else if (B >= 1024 && B < 1024 * 1024) {
					size = B / 1024;
					danWei = "KB";
				} else if (B >= 1024 * 1024 && B < 1024 * 1024 * 1024) {
					size = B / 1024 / 1024;
					danWei = "MB";
				} else if (B >= 1024 * 1024 * 1024
						&& B < 1024 * 1024 * 1024 * 1024) {
					size = B / 1024 / 1024 / 1024;
					danWei = "GB";
				}

				addContentToFile (saveDir, saveFileName, fileName + "|" + size
						+ danWei + "\n");
			}
		}
	}

	static void addContentToFile(String saveDir, String fileName, String content) {

		FileWriter fw = null;
		BufferedWriter bw = null;
		try {
			File file = new File (saveDir + fileName);
			if (!file.exists ()) {
				file.createNewFile ();
			}
			fw = new FileWriter (file, true);
			bw = new BufferedWriter (fw);
			bw.write (content);
		} catch (Exception e) {
			e.printStackTrace ();
		} finally {
			try {
				bw.close ();
			} catch (IOException e) {
				e.printStackTrace ();
			}

		}
	}

	public static void main(String[] args) {

		// String findDir = "D:\\cvs";
		// String saveDir = "D:\\data\\";
		// String[] fileTypes = {"vsd"};
		// String[] exceptDirNames = {"CVS",".svn"};
		// for (String fileType : fileTypes) {
		// ListFilesInDirByType (findDir, fileType, saveDir,exceptDirNames);
		// }

		// String findDir = "F:\\svn";
		// String saveDir = "D:\\data\\";
		// String searchContent = "idm";
		// String[] exceptDirNames = {"CVS",".svn"};
		// ListFilesInDirByName (findDir, saveDir,
		// searchContent,exceptDirNames);

		String findDir = "F:\\svn";
		String saveDir = "D:\\data\\";
		String searchContent = "IM";
		String[] fileTypes = {"doc", "pdf", "txt", "properties"};
		String[] exceptDirNames = {"CVS", ".svn"};
		ListFilesInDirByNameInSomeType (findDir, saveDir, searchContent,
				fileTypes, exceptDirNames);
	}

}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值