`

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

 
阅读更多
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);
	}

}
 
分享到:
评论

相关推荐

    Java 实例 - 遍历目录源代码-详细教程.zip

    在Java编程中,遍历目录是一项基础且重要的任务,它涉及到文件系统操作,尤其是在处理大量文件或需要查找特定文件时。本教程将深入探讨如何在Java中遍历目录,并通过实例代码来帮助你理解这一过程。 首先,让我们...

    java中读取目录下指定的文件

    Java提供了丰富的API来处理文件系统相关的操作,包括读取、创建、删除文件以及遍历目录等。这里我们将详细讲解如何在Java中实现这个功能。 首先,你需要导入Java的`java.io`包,它包含了处理文件和输入/输出流的...

    遍历查找硬盘中所有文件夹及文件,包括隐藏文件

    在批处理脚本中,可以使用`FOR /R`命令来遍历目录: ```batch @echo off setlocal enabledelayedexpansion for /r "D:\" %%a in (*) do ( if not "%%~a"=="" ( echo 文件: %%a ) ) ``` 这段脚本会从D盘根目录...

    Java 实例 - 遍历指定目录下的所有目录源代码-详细教程.zip

    4. **预定义的文件系统操作**:Java标准库提供了一系列预定义的`Files`类方法,如`Files.walk()`和`Files.find()`, 这些方法可以轻松地遍历目录树并执行特定的操作,如查找特定类型的文件或满足某种条件的文件。...

    遍历磁盘目录.rar

    在Java中,可以利用`java.io.File`类的`list()`或`listFiles()`方法遍历目录,如果需要递归遍历,可以使用递归函数。 遍历目录时,需要注意几个关键点: 1. **权限**:访问某些目录可能需要特定的权限,因此在遍历...

    java实现根据关键字查找所在文件夹的文件

    这个程序首先定义了要查找的目录和关键字,然后调用`findFiles()`方法,该方法递归地遍历目录并检查文件内容。当找到包含关键字的文件时,将其添加到结果列表中。最后,打印出所有匹配的文件路径。 需要注意的是,...

    目录里的文件名比较

    6. **效率优化**:为了提高比较效率,可以先对目录A的文件名进行排序或构建哈希表,然后遍历目录B,每次查找文件名在哈希表中是否存在,避免了二次遍历。 7. **异常处理**:在实际应用中,需要考虑各种异常情况,...

    如何遍历文件夹查找文件

    - **Python**: 可以使用`os`和`os.path`模块,如`os.walk()`函数用于递归遍历目录。 - **Java**: `java.io.File`类提供了`list()`, `listFiles()`, `listFiles(FileFilter)`等方法。 - **C++**: 使用`...

    遍历某文件夹下的 .txt 文件

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结出与“遍历某文件夹下的 .txt ...通过上述知识点的学习,可以更好地理解如何在 Java 中遍历文件夹并处理其中的文件,特别是在针对特定文件类型的需求场景下。

    获取文件夹的子目录的文件名

    无论哪种语言,核心思想都是遍历目录结构,检查每个条目是否为子目录,然后根据需求处理或递归查找其下的文件名。 总之,获取文件夹的子目录的文件名是通过系统提供的文件系统API来实现的,这在各种编程场景中都...

    java-使用java开发的find查找工具

    在实现查找工具时,我们需要遍历指定路径下的所有文件和子目录。 2. **正则表达式匹配**:`java.util.regex`包提供了处理正则表达式的工具。用户可能希望根据文件名的模式进行查找,例如,查找所有`.txt`结尾的文件...

    java编写一个文件查找器

    1. **文件遍历**:文件查找器通常会递归地遍历目录结构。使用`File.listFiles()`方法可以获取一个目录下的所有文件和子目录。如果目录为空或者不存在,该方法会返回null,因此需要进行异常处理。 2. **文件过滤**:...

    Java函数式编程(十一):遍历目录

    本篇文章将探讨如何在Java中使用函数式编程来遍历目录。 首先,遍历目录通常涉及到对文件系统进行操作,Java的`java.nio.file`包提供了丰富的API来处理文件和目录。`Files.list()`方法用于获取指定目录下的所有...

    使用递归算法在指定目录下查找文件

    在文件系统中,递归常用于遍历目录结构,查找满足特定条件的文件。 首先,我们需要理解文件系统的目录结构。在大多数操作系统中,文件系统采用树形结构,其中每个目录可以包含零个或多个子目录及文件。递归算法在...

    在系统中文件查找java代码

    // 遍历目录,构建索引 } public List&lt;File&gt; search(String keyword) { // 根据关键词查询索引,返回匹配的文件列表 } } // 使用示例 KeywordSearchDemo demo = new KeywordSearchDemo(); demo.buildIndex...

    文件按照window 的排序规则-Java实现

    在这个场景中,如果`quiz`是一个目录,我们可以遍历其中的所有文件,按照上述规则进行排序。如果`quiz`是一个文件,那么它本身不能直接参与排序,但如果我们有一个包含多个文件的目录`quiz`,可以按照上述方法对`...

    Java使用FilenameFilter查找出目录下指定后缀的文件示例

    "Java使用FilenameFilter查找出目录下指定后缀的文件示例" Java语言中,FilenameFilter是一个非常有用的类,主要用于文件遍历和查找操作。今天,我们将通过一个实例,介绍如何使用FilenameFilter查找出目录下指定...

    Java 实例 - 在指定目录中查找文件源代码-详细教程.zip

    自定义一个过滤器实现,检查文件名是否以".java"结尾,然后在遍历目录时应用这个过滤器。 4. **文件读取**:一旦找到源代码文件,可以使用`java.nio.file.Files`类的`readAllBytes()`或`new BufferedReader(new ...

    android 查找程序根目录下所有文件 java i/o与ListActivity的结合

    接下来,我们将使用Java的I/O流来读取和遍历目录。`java.io.File`类提供了遍历目录和文件的方法。例如,我们可以创建一个`File`对象,代表根目录,然后调用`listFiles()`方法获取所有子文件或目录。这个方法返回一个...

    文件名过滤器

    通过实现这个接口,用户可以根据自己的需求编写过滤逻辑,从而在遍历目录时只获取符合特定条件的文件列表。 #### FilenameFilter 接口简介 `FilenameFilter`是`java.io`包中的一个接口,它只有一个方法需要实现:`...

Global site tag (gtag.js) - Google Analytics