`

使用递归操作文件的两个例子

阅读更多

1.使用递归删除某一目录下的全部文件

package com.lfl.file;

import java.io.File;

public class DeleteAllFileTest {
	
	public static void deleteAll(File file) {
		if (file.isFile() || file.list().length == 0) {
			file.delete();
		} else {
			File[] files = file.listFiles();
			for (File f : files) {
				deleteAll(f);
				f.delete();
			}
			file.delete();
		}
	}
	
	

	public static void main(String[] args) {
		File file = new File("G:\\myfirstsite222");
		deleteAll(file);
	}

}

 

 

2.使用递归遍历某一目录下的所有文件,并以树形结构显示

package com.lfl.file;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class ListAllFileTest {
	
	private static int level;
	
	public static void deepList(File file) {
		if (file.isFile() || file.list().length == 0) {
			return;
		} else {
			File[] files = file.listFiles();
			files = sort(files);
			for (File f : files) {
				StringBuilder output = new StringBuilder();
				if (f.isFile()) {
					output.append(getLevel(level));
					output.append(f.getName());
				} else {
					output.append(getLevel(level));
					output.append(f.getName());
					output.append("\\");
				}
				System.out.println(output.toString());
				
				if (f.isDirectory()) {
					level ++;
					deepList(f);
					level --;
				}
			}
			
		}
	}
	
	
	public static File[] sort(File[] files) {
		List<File> list = new ArrayList<File>();
		List<File> fileList = new ArrayList<File>();
		for (File f : files) {
			if (f.isDirectory()) 
				list.add(f);
			else 
				fileList.add(f);
		}
		list.addAll(fileList);
		return list.toArray(new File[files.length]);
	}
	
	public static String getLevel(int level) {
		StringBuilder sb = new StringBuilder();
		for (int i=0; i < level; i++) {
			sb.append("\t");
		}
		return sb.toString();
	}
	
	
	

	public static void main(String[] args) {
		File file = new File("G:/222");
		deepList(file);
	}

}

 

 

分享到:
评论

相关推荐

    利用递归方式实现对文件的查找操作

    递归通常包含两个部分:基本情况(Base Case)和递归情况(Recursive Case)。基本情况是指问题可以直接解决,无需进一步递归的情况;递归情况则是将问题分解成更小的子问题,然后递归地解决这些子问题,最终合并...

    一个递归删除指定目录和文件的例子

    这个例子将探讨如何使用递归实现这个功能,主要关注C++编程语言,因为提供的文件列表暗示这是一个C++项目。 首先,让我们了解递归的基本概念。递归是一种函数调用自身的技术,通常用于解决具有子问题结构的问题。在...

    使用递归算法打印目录下所有的文件

    递归由两个主要部分组成:基本情况(base case)和递归情况(recursive case)。基本情况是问题最简单或最小的情况,可以直接求解,而无需进一步的递归调用。递归情况则是将复杂问题分解为更小的相似子问题,并通过...

    栈和递归遍历实例

    在遍历文件系统时,无论是使用栈还是递归,目标都是遍历目录结构,访问每个文件和子目录。栈的方法通常涉及手动维护一个待处理目录列表,每次从栈顶取出一个目录,检查其内容,将其子目录压入栈中,然后继续处理下一...

    (java递归)删除文件

    在这个例子中,递归调用`findFiles`会在到达文件系统中的最底层文件或目录时停止。当函数不再找到任何匹配的文件或目录,递归过程自然结束。 ### 关键知识点六:代码优化与改进 尽管当前实现有效,但可以从几个...

    asp.net递归运算的例子

    在递归过程中,通常有两个主要部分:基本情况(base case)和递归情况(recursive case)。基本情况是最简单的情况,可以直接得出结果,而递归情况则是将问题分解为更小的子问题,然后通过调用自身来解决这些子问题...

    利用递归方式实现对文件的查找操作(3KB)...

    在IT领域,文件查找是一个...总之,递归文件查找是编程中的一个实用技巧,它能有效地处理多层次的文件系统结构。通过VB6这样的工具,我们可以轻松实现这个功能,结合模块、窗体和项目文件,构建出用户友好的应用程序。

    vba写的完整例子加用户窗口操作选择文件读取文件等

    比如,如果这个例子涉及资源分配问题,可以先为每个任务分配最可用的资源,直到所有资源耗尽或任务完成。 最后,**欧几里得定律**通常与计算两个整数的最大公约数(GCD)相关,它是算法设计的基础。在VBA中,可以...

    VB 递归算法例子.rar

    在这个例子中,`PascalTriangle`函数会递归地调用自身,每次调用都会生成前一层的三角形,并基于这些信息计算当前层的数字。当输入的n为1时,函数返回基础的“1”行,这是递归的基本情况。 通过这个递归函数,VB...

    VC 递归和非递归算法遍历磁盘文件

    在遍历文件系统时,如果选择递归方法,通常会从一个目录开始,然后对每个子目录递归调用相同的操作。具体步骤如下: 1. 从指定的根目录开始。 2. 遍历该目录下的所有文件,执行需要的操作。 3. 对每个子目录,再次...

    VC++ 使用递推 递归法删除目录的小例子 源码

    在编程领域,递推和递归是两种常用的方法来解决复杂问题,特别是在处理层次结构或树形结构数据时,如文件系统中的目录操作。在这个VC++的小例子中,我们将探讨如何利用递推和递归技术删除目录。 首先,让我们理解...

    digui.rar_digui_文件夹遍历_递归_递归 c#_遍历文件

    递归通常包含两个主要部分:基本情况和递归情况。基本情况是问题的最简单形式,可以直接解决;而递归情况则是将问题分解成更小的子问题,并调用自身来解决这些子问题。在遍历文件夹时,基本情况可能是遇到一个没有子...

    无限级树正向查找、反向查找例子【递归实现】

    本话题主要探讨如何使用递归实现无限级树的正向查找与反向查找,我们将深入理解这两种查找方法,并结合C#语言来阐述其实现细节。 **一、无限级树的理解** 无限级树是指具有无限数量层级的树结构,每一层可以有任意...

    递归下降语法分析--简单例子程序

    在这个例子中,我们将探讨如何通过递归下降解析器对给定的文法进行分析。 文法: ``` E → E+T | E-T | T T → T*F | T/F | F F → (E) | i ``` 这个文法描述了一个简单的算术表达式语言,其中`E`代表表达式,`T`...

    递归程序

    在这个场景中,我们有两个文件:`validator.html` 和 `js`,可能是一个简单的网页应用,其中`js`文件可能包含了实现递归功能的JavaScript代码。 首先,让我们深入理解递归的基本原理。递归程序由两个主要部分组成:...

    易语言子程序递归教程

    递归通常包含两个基本部分:基本情况(base case)和递归情况(recursive case)。基本情况是问题最简单的情形,可以直接得出答案;递归情况则是将问题规模减小,然后调用自身解决更小的问题。 以求阶乘为例,阶乘...

    使用C++,请给出此题的递归算法及非递归算法。

    这个例子是计算阶乘的递归函数。当`n`等于0或1时,函数返回1(这是递归的基本情况)。否则,函数会递归地调用自身,计算`n-1`的阶乘并乘以`n`。 然而,递归算法可能会导致大量的函数调用,消耗更多的内存(因为需要...

    递归算法事例及理论说明

    另一个例子是将整数转换为特定进制的表示,这个任务可以使用递归算法实现。给定的代码示例中,`numbconv`函数接收一个整数n,将其转换为指定进制b,并将结果保存在字符串s中。这个函数首先通过递归调用处理n除以b的...

    学学Python_49类的成员08 生成器的使用:递归

    在这个例子中,`recursive_walk`函数首先检查当前目录下的每个文件,如果是目录,就递归调用自身;如果是文件,就通过`yield`返回文件路径。`yield from`语句用于将子生成器的值直接插入到当前生成器的流中,简化了...

    读写word和excel,并运用递归生成管段

    递归函数通常包含两个部分:基本情况(base case)和递归情况(recursive case)。在管段生成的例子中,基本情况可能是只有一个管点或没有管点,这时无需生成管段。递归情况则是当有多个管点时,函数会先连接第一个...

Global site tag (gtag.js) - Google Analytics