有一年多没有搞Java了,一直在搞数据库与JS,今天突然要写一个深度遍历目录,获取文件数及文件大小的程序,呵呵,花了一个多小时才搞出来了,感觉自己在Java这块生疏了很多,哎,什么都是这样,不用,一下子就会忘记好多的,为了今后便于再次利用,贴上源代码.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;
public class EachFolder {
private String folder;
private String outFileName;
private StringBuffer sb;
public EachFolder() {
this.folder = "F:/Book/CSS";
this.outFileName = "F:/test.txt";
sb = new StringBuffer("");
}
public EachFolder(String folder, String outFileName) {
this.folder = folder;
this.outFileName = outFileName;
sb = new StringBuffer("");
}
public void exec() {
File ef = new File(this.folder);
this.each(ef);
this.writeFile();
}
private void each(File f) {
String[] flist = f.list();
for (String fn : flist) {
File file = new File(f.getPath() + "/" + fn);
if (file.isDirectory()) {
this.each(file);
} else if (file.isFile()) {
try {
int size = new FileInputStream(file).available();
int kb = size / 1024 > 0 ? size / 1024 + 1 : 1;
sb.append("文件名:" + file.getPath() + "***********文件大小:" + kb
+ "kb\n");
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("文件未找到");
} catch (IOException e) {
e.printStackTrace();
System.out.println("IO流错误");
}
}
}
}
private void writeFile() {
try {
BufferedReader br = new BufferedReader(new StringReader(
sb.toString())); // 输入流
BufferedWriter bw = new BufferedWriter(new FileWriter(outFileName)); // 输出流
String line = null;
while ((line = br.readLine()) != null) {
bw.write(line + "\n");
}
bw.flush();
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
EachFolder ef = new EachFolder("F:/Book/JavaSE", "F:/test.txt");
ef.exec();
}
}
分享到:
相关推荐
值得注意的是,虽然题目要求不使用子程序,但为了实现深度遍历(即遍历所有子目录的子目录),通常需要递归,这在易语言中通常表现为子程序。不过,我们可以通过使用结构化的方式(如“堆栈”数据结构)来避免使用...
例如,使用`Files.walk()`方法可以方便地深度遍历目录及其所有子目录: ```java Path startPath = Paths.get("path/to/directory"); try (Stream<Path> stream = Files.walk(startPath)) { stream.forEach(path ->...
通过调用`GetFiles()`和`GetDirectories()`在子目录上,我们可以实现深度遍历整个文件系统树: ```cpp void TraverseDirectory(DirectoryInfo^ dir) { for each (FileInfo^ file in dir->GetFiles()) { // 处理...
例如,如果目录结构复杂,可以通过递归函数实现深度遍历。同时,为了安全起见,可以考虑使用`passive`模式进行FTP连接,以避免防火墙或NAT设备的问题。 为了实现这个功能,你需要创建一个批处理脚本,其中包含上述...
在Java中,遍历目录树可以这样实现: ```java import java.io.File; public class DirectoryTraversal { public static void traverse(File startPath) { if (startPath.isDirectory()) { String[] children = ...
在IT领域,尤其是在Windows开发中,经常需要处理文件系统操作,如遍历目录结构并以图形化的方式展示出来。在给定的标题“递归遍历目录并生成树”中,涉及的核心技术是递归算法和Windows API的使用,特别是与文件系统...
在编程领域,遍历目录是一项常见的任务,尤其在处理大量文件和目录时,效率尤为重要。易语言是一种中国本土开发的编程语言,它以其简洁的语法和面向初学者的设计而受到欢迎。本文将深入探讨易语言中如何使用非递归...
在Java编程语言中,对文件夹目录进行深度遍历是一个基础且常见的操作,它主要用于列出目录树下的所有文件和子目录。深度遍历(又称深度优先遍历)是指沿着树的深度遍历树的节点,尽可能深地搜索树的分支,当节点v的...
该程序的核心功能在于深度遍历目录。在计算机科学中,深度优先搜索(DFS)是一种遍历或搜索树或图的算法,它沿着树的分支尽可能深地搜索,直到达到叶节点或满足某种条件为止。在这个应用中,DFS被用来逐级查找手机...
为了实现分页查询,`FileUtil`可能会包含一个递归函数,用于深度遍历目录,收集所有文件信息,并将这些信息传递给`FileMap`进行处理。递归是关键,因为它能确保无论目录结构多么复杂,都能正确地获取所有子目录和...
在Linux操作系统中,遍历目录是一项基础且至关重要的任务,尤其对于系统管理员和开发者来说,了解如何有效地遍历和操作文件系统是必备技能。Linux是一个类UNIX系统,其文件系统结构遵循一种层次化的树状模型,从根...
在"易语言源码非递归算法遍历目录.7z"这个压缩包中,包含的是使用易语言编写的源代码,用于实现一种非递归算法来遍历目录结构。非递归算法不同于传统的递归方式,递归通常会通过函数自我调用来处理目录树,而这种非...
例如,他们可能会尝试使用“../”或“..%2f”等符号来“向上”遍历目录结构,以查看不应公开的系统文件或敏感数据。 2. **网站扫描**:网站扫描是使用自动化工具来检测网站的漏洞、弱点和配置错误的过程。它包括了...
在VB(Visual Basic)编程中,遍历目录是一项常见的任务,尤其在处理文件系统操作时。这涉及到访问和处理文件夹及其子文件夹中的文件。本文将深入探讨如何使用VB来遍历目录,并提供相关知识点。 一、VB的...
遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施...
`Dir`函数虽然简单易用,但在处理大量文件或深度遍历目录结构时,速度相对较慢。API函数直接与操作系统交互,因此可以提供更快的搜索速度。 DRVSCAN.FRM可能是表单文件,展示了用户界面的设计,可能包含一个文本框...
下面我们将深入探讨C#中遍历目录的递归方法以及相关知识点。 1. **System.IO命名空间**:在C#中,`System.IO`命名空间提供了用于处理文件和目录的各种类和方法。`DirectoryInfo`和`FileInfo`类分别代表目录和文件...
易语言提供了“目录列举”或“深度遍历目录”等命令,可以递归地遍历指定路径下的所有子目录和文件,从而找到所有的MP3文件。 5. **条件判断与循环控制**: 在搜索过程中,会涉及到条件判断(如“如果...则...”)...