深度遍历:递归的应用
来源:互联网 发布:电脑怎么改网络ip地址 编辑:程序博客网 时间:2024/05/16 12:17
/*
*需求:对指定目录进行所有内容的列出(包含子目录中的内容)
*也可以理解为深度遍历
*分析:listFiles方法只会列出当前目录下的所有文件
*但是如果需要访问当前目录下的文件下的文件,
* 那还要对listFiles方法
*进一步操作
*
*/
public class FileTest {public static void main(String[] args) { //1,建立当前文件 File file = new File("demodir"); //2,需要进行扩展,用函数封装起来 enlistAll(file,0);}public static void listAll(File file) { /* * listFiles方法返回一个File对象数组, * 将当前目录下所有文件封装成file对象 * 这样不仅仅局限于对文件名的操作。 */ /* * 3,分析过程,思考过程 * */ /*File[] dir = file.listFiles(); for(File name:dir){ if(name.isDirectory()){//判断是否是目录 //如果是目录,就继续遍历 File[] dir2 = name.listFiles(); for(File name2:dir2){ if(name.isDirectory()){.....}; * 写到这发现端倪了,如果还是目录还要继续遍历 * 我们发现,我们再重复调用这个函数, * 想到要用到递归! } } //无论是否是目录都要打印出文件名 System.out.println(name); }*/}/* *重新建立这个函数,加个参数level 用来表示层级关系 */public static void enlistAll(File file,int level) { //每调用一次就打印一次这个文件 getspace方法是为了区别层级而设的 System.out.println(getSpace(level)+file.getName()); level++; File[] dir = file.listFiles(); for(File name:dir){ //判断是否是目录,是就重复进行,调用当前函数(递归) if(name.isDirectory()){ enlistAll(name,level); }else{ System.out.println(getSpace(level)+name.getName()); } }}public static String getSpace(int level ) { StringBuilder sb = new StringBuilder(); sb.append("|----"); for(int i = 0;i<level;i++){ sb.insert(0," "); } return sb.toString();}}
打印效果
0 0
- 深度遍历:递归的应用
- 图的遍历(深度递归遍历,深度非递归遍历,广度递归遍历)
- 图的深度优先遍历----递归
- 先序中序非递归 图的深度遍历
- 深度优先遍历算法的非递归
- 树的非递归深度优先遍历
- 深度优先遍历的非递归
- 递归遍历指定深度的树状数据结构
- 深度递归遍历文件夹
- 文件深度遍历--递归
- 二叉树的遍历,递归和非递归,求深度
- 二叉树的深度遍历---递归&非递归
- 图的遍历,非递归版本,深度优先遍历
- 二叉树遍历的应用(递归!递归!递归!)
- 二叉树的深度优先遍历(递归、非递归),广度优先遍历(递归)
- 【数据结构】二叉树的定义,递归遍历,非递归遍历,层次遍历,深度等
- 游戏------深度优先遍历的应用
- 【数据结构】邻接矩阵表示法的图的深度广度优先遍历递归和非递归遍历
- qduoj 统计人数
- docker 实战---使用oracle xe作为开发数据库(六)
- 为git设置HTTPS代理
- AJAX总流程
- 定义宏求两个表达式中较大(较小)的一个(宏和函数的区别)
- 深度遍历:递归的应用
- HTML5学习(1)——video和audio用法
- sqlite数据库备份&还原、导出&导入
- cisco路由器配置
- 传说中比特币扩容方案"隔离见证"将至?大量钱包正蓄势待发
- 1141
- 链表的插入(头插,尾插,中间插)
- 央行探索在区块链上发行数字货币的可能
- "=="& .equals() & TextUtils.isEmpty(str) & str.isEmpty() 之间的区别