文件的深度遍历

本文介绍了一个Java程序实现对指定目录及其子目录内所有文件和文件夹的深度遍历,输出目录结构及内容。通过递归方法遍历目录结构,使用自定义的空格函数来表示目录层次,最终输出目录下的文件或文件夹名称。


 /**

 * 需求:对指定目录进行所有内容的列出,包括子目录内的文件

 * 即对目录的深度遍历

 */

package cn.test.filedemo;

 

import java.io.File;

 

public class FileDemoTest {

public static void main(String[] args) {

File dir = new File("d:\\java");

listAll(dir,0);

}

//获取指定目录下的所有文件夹或者文件对象

//定义计数器统计目录层次

private static void listAll(File dir,int level) {

// TODO Auto-generated method stub

//拿到的是文件或者文件夹对象

System.out.println(getSpace(level)+dir.getName());

level++;

File[] files = dir.listFiles();

//只为遍历而不操作数据,使用foreach

for (int i = 0; i < files.length; i++) {

//判断遍历到的是否是目录

if(files[i].isDirectory()){

/**

 * 递归:

 *  函数自身间接或者直接的调用到了自身。

 * 一个功能在被重复使用,并且每次使用,参与运算的结果和上一次调用有关。

 * 这时可以用递归来解决问题。

 * 递归必须是有进有出的,不能只进不出

 * 递归一定要明确条件,否则容易栈溢出

 * 注意递归的次数

 */


listAll(files[i],level);

}else{

System.out.println(getSpace(level)+files[i].getName());

}

}

}

//添加空格显示目录层次

private static String getSpace(int level) {

// TODO Auto-generated method stub

StringBuilder sb = new StringBuilder();

sb.append("|--");

for (int i = 0; i < level; i++) {

sb.insert(0,"   ");

}

return sb.toString();

}

 

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值