递归遍历详解
来源:互联网 发布:大公 知乎 编辑:程序博客网 时间:2024/06/08 12:39
本章内容,主要侧重于讲解一下递归遍历的思想,可能代码不全,需要大家自己完成。
1.以SDcard文件资源的递归遍历为例子讲解思路。
首先要明白,SDcard递归遍历要用到一个文件File路径,几乎全部的路径,都是从根目录rootPath逐级获取到的。那么,rootPath显得尤为重要。
File
注意,返回值本身就是File类型的,所以做ListView操作的时候,没有必要转换成String类型的,来显示文件列表。因为,ListView一般设置适配器SimpleAdapter,需要的5个参数(Context,list<Map<String,X>)data,int
2.递归遍历,目的就是找出我们所需要的文件资源。
(1)显示SDcard上各级文件夹和文件目录
第一次遍历,我们肯定是首先要根据rootPath路径,显示出根目录下的文件夹和文件列表。那我们做的工作就是,找出要显示的这个list列表,里面存储着文件夹和文件。那么我们怎么找呢?
实例代码:2-1
if
for
Map<String,
if
map.put("img",
else
map.put("img",
}
map.put("fname",
lst.add(map);
}
}
return
找出了数据源list,然后设置适配器,显示即可。
这就是显示出了递归遍历的伟大之处~~~
看思路:
首先,给listview添加点击事件。然后,进行判断,如果是目录,那么进行递归遍历;如果是文件,给出提示。
实例代码2-2
lv1.setOnItemClickListener(new
@Override
public
int
File
if
//此处执行代码2-1
}
Toast.makeText(MyFileExplorerActivity.this,
Toast.LENGTH_SHORT).show();
}
});
(2)用递归遍历的方法,删除指定的文件夹及子目录所有的文件。
要程序要删除SDcard上面的一个文件夹及其子目录的全部文件,大家首先要明白:你如果直接file.delete的话,是删不掉的。必须要先把子目录中的文件和文件夹删除掉,最后删除该文件夹。
实例代码2-3
1
2 if
3 //先删除子文件夹和文件
4 File[]
5 if(files!=null){
6 for
7 deleteDirectorys(ff);
8 }
9 }
10 }
11 //最后,删除该文件夹或文件
12
13 }
程序中,是传入了某个File对象,就是指定要删除的文件夹或者文件。重点是第6、7行。比如,指定一个目录:music-->mp3-->love.mp3/song.mp3
执行过程:
==1次==
==2次==
从执行过程中,个人总结出某些规律:
这2条规律刚看出来,不知道结论是否永远为true,大家可以再举几个例子再验证一下~~哈哈
(3)用递归遍历的方法,显示某个文件夹及各级子目录下的全部文件。
既然要显示出全部的文件,那么只需要用递归遍历找出file.isFile()为真的File,然后添加到list中显示即可。可见具体代码:
实例代码:2-4
private
File[]
if
for
if
checkFile(f);
}
else
}
}
}
return
}
具体的执行推演过程,大家如果觉得脑子有点乱的话,建议找只笔推演下执行的过程,这样会比较容易理些。如有错误之处,还请大家在评论中给与指出~~Devil在此先谢过各位大虾。
- 递归遍历详解
- ORACLE递归查询遍历详解
- 二叉树中序遍历非递归算法详解
- 二叉树非递归遍历算法详解
- 二叉树非递归遍历算法详解
- 递归遍历
- 树的先序遍历、中序遍历、后续遍历的递归与循环详解
- 关于二叉树后序遍历非递归算法详解
- 二叉树中序遍历非递归算法实现详解
- 二叉树创建,遍历,求深度详解(递归方法)
- 非递归中序遍历二叉树算法详解
- 二叉树的遍历详解(前序中序后序层次-递归和非递归)
- 遍历文件(递归)
- dir()递归 遍历子目录
- 递归遍历文件
- 目录的递归遍历
- 目录的递归遍历
- 递归遍历页面控件
- ps命令
- android 添加外接键盘操作事件流程
- 强大的解压缩库
- React - Facebook开源Javascript库
- Dropbox 安装地址 http://db.tt/UrYer0U
- 递归遍历详解
- Telephony架构简述
- O(n)时间求最接近中位数的k个数
- __builtin_return_address/_RET_IP_/_THIS_IP_
- 教你轻松显示Gif图片
- jsp 中去掉字符串中的空格
- Delphi DBExpress 数据库教程自学
- SQL视图学习
- Mybatis从数据库中取日期类型数据的方法