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编程中,遍历目录是一项基础且重要的任务,它涉及到文件系统操作,尤其是在处理大量文件或需要查找特定文件时。本教程将深入探讨如何在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盘根目录...
4. **预定义的文件系统操作**:Java标准库提供了一系列预定义的`Files`类方法,如`Files.walk()`和`Files.find()`, 这些方法可以轻松地遍历目录树并执行特定的操作,如查找特定类型的文件或满足某种条件的文件。...
在Java中,可以利用`java.io.File`类的`list()`或`listFiles()`方法遍历目录,如果需要递归遍历,可以使用递归函数。 遍历目录时,需要注意几个关键点: 1. **权限**:访问某些目录可能需要特定的权限,因此在遍历...
这个程序首先定义了要查找的目录和关键字,然后调用`findFiles()`方法,该方法递归地遍历目录并检查文件内容。当找到包含关键字的文件时,将其添加到结果列表中。最后,打印出所有匹配的文件路径。 需要注意的是,...
6. **效率优化**:为了提高比较效率,可以先对目录A的文件名进行排序或构建哈希表,然后遍历目录B,每次查找文件名在哈希表中是否存在,避免了二次遍历。 7. **异常处理**:在实际应用中,需要考虑各种异常情况,...
- **Python**: 可以使用`os`和`os.path`模块,如`os.walk()`函数用于递归遍历目录。 - **Java**: `java.io.File`类提供了`list()`, `listFiles()`, `listFiles(FileFilter)`等方法。 - **C++**: 使用`...
根据提供的文件标题、描述、标签以及部分内容,我们可以总结出与“遍历某文件夹下的 .txt ...通过上述知识点的学习,可以更好地理解如何在 Java 中遍历文件夹并处理其中的文件,特别是在针对特定文件类型的需求场景下。
无论哪种语言,核心思想都是遍历目录结构,检查每个条目是否为子目录,然后根据需求处理或递归查找其下的文件名。 总之,获取文件夹的子目录的文件名是通过系统提供的文件系统API来实现的,这在各种编程场景中都...
在实现查找工具时,我们需要遍历指定路径下的所有文件和子目录。 2. **正则表达式匹配**:`java.util.regex`包提供了处理正则表达式的工具。用户可能希望根据文件名的模式进行查找,例如,查找所有`.txt`结尾的文件...
1. **文件遍历**:文件查找器通常会递归地遍历目录结构。使用`File.listFiles()`方法可以获取一个目录下的所有文件和子目录。如果目录为空或者不存在,该方法会返回null,因此需要进行异常处理。 2. **文件过滤**:...
本篇文章将探讨如何在Java中使用函数式编程来遍历目录。 首先,遍历目录通常涉及到对文件系统进行操作,Java的`java.nio.file`包提供了丰富的API来处理文件和目录。`Files.list()`方法用于获取指定目录下的所有...
在文件系统中,递归常用于遍历目录结构,查找满足特定条件的文件。 首先,我们需要理解文件系统的目录结构。在大多数操作系统中,文件系统采用树形结构,其中每个目录可以包含零个或多个子目录及文件。递归算法在...
// 遍历目录,构建索引 } public List<File> search(String keyword) { // 根据关键词查询索引,返回匹配的文件列表 } } // 使用示例 KeywordSearchDemo demo = new KeywordSearchDemo(); demo.buildIndex...
在这个场景中,如果`quiz`是一个目录,我们可以遍历其中的所有文件,按照上述规则进行排序。如果`quiz`是一个文件,那么它本身不能直接参与排序,但如果我们有一个包含多个文件的目录`quiz`,可以按照上述方法对`...
"Java使用FilenameFilter查找出目录下指定后缀的文件示例" Java语言中,FilenameFilter是一个非常有用的类,主要用于文件遍历和查找操作。今天,我们将通过一个实例,介绍如何使用FilenameFilter查找出目录下指定...
自定义一个过滤器实现,检查文件名是否以".java"结尾,然后在遍历目录时应用这个过滤器。 4. **文件读取**:一旦找到源代码文件,可以使用`java.nio.file.Files`类的`readAllBytes()`或`new BufferedReader(new ...
接下来,我们将使用Java的I/O流来读取和遍历目录。`java.io.File`类提供了遍历目录和文件的方法。例如,我们可以创建一个`File`对象,代表根目录,然后调用`listFiles()`方法获取所有子文件或目录。这个方法返回一个...
通过实现这个接口,用户可以根据自己的需求编写过滤逻辑,从而在遍历目录时只获取符合特定条件的文件列表。 #### FilenameFilter 接口简介 `FilenameFilter`是`java.io`包中的一个接口,它只有一个方法需要实现:`...