Java递归和非递归遍历目录
来源:互联网 发布:淘宝在美国 编辑:程序博客网 时间:2024/04/30 11:14
package cn.yws.getfilepath;import java.io.File;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;/** * Java递归和非递归遍历目录 * @author Administrator * */public class FileSystem {public static void main(String[] args) {long a = System.currentTimeMillis();List<File> resultfiles = new ArrayList<File>();String[] lists = { "D:\\android\\androidNDK" };/*for (int i = 0; i < lists.length; i++) {File file = new File(lists[i]);scanDirRecursion(file, resultfiles, "java");}for (File file : resultfiles) {System.out.println(file.getAbsolutePath());}*/for (int i = 0; i < lists.length; i++) {File file = new File(lists[i]);scanDirNoRecursion(file, resultfiles, "java");}for (File file : resultfiles) {System.out.println(file.getAbsolutePath());}System.out.print("文件总数:" + resultfiles.size());System.out.print("总耗时:");System.out.println((System.currentTimeMillis() - a) + "ms");System.out.println((System.currentTimeMillis() - a) / 1000 + "s");}/** * 非递归遍历目录 * * @param file * 文件目录 * @param resultfiles * 保存返回的结果集 * @param endWith * 为null,则返回所有文件,不为空,则返回所匹配的文件 */public static void scanDirNoRecursion(File dir, List<File> resultfiles,String endWith) {LinkedList<File> list = new LinkedList<File>();File file[] = dir.listFiles();for (int i = 0; i < file.length; i++) {if (file[i].isDirectory())list.add(file[i]);else {// System.out.println(file[i].getAbsolutePath());if (file[i].getName().toLowerCase().endsWith(endWith.toLowerCase())) {resultfiles.add(file[i]);}}}File tmp;while (!list.isEmpty()) {tmp = list.removeFirst();// 首个目录if (tmp.isDirectory()) {file = tmp.listFiles();if (file == null)continue;for (int i = 0; i < file.length; i++) {if (file[i].isDirectory())list.add(file[i]);// 目录则加入目录列表,关键else {// System.out.println(file[i]);if (endWith != null) {if (file[i].getName().toLowerCase().endsWith(endWith.toLowerCase()))resultfiles.add(file[i]);} else {resultfiles.add(file[i]);}}}} else {// System.out.println(tmp);if (endWith != null) {if (tmp.getName().toLowerCase().endsWith(endWith.toLowerCase()))resultfiles.add(tmp);} else {resultfiles.add(tmp);}}}}/** * 递归遍历目录 * * @param file * 文件目录 * @param resultfiles * 保存返回的结果集 * @param endWith * 为null,则返回所有文件,不为空,则返回所匹配的文件 */public static void scanDirRecursion(File file, List<File> resultfiles,String endWith) {try {if (file.canRead()) {if (file.isDirectory()) {String[] files = file.list();if (files != null) {for (int i = 0; i < files.length; i++) {scanDirRecursion(new File(file, files[i]),resultfiles, endWith);}}} else {// System.out.println(file);if (endWith != null) {if (file.getName().toLowerCase().endsWith(endWith.toLowerCase()))resultfiles.add(file);} else {resultfiles.add(file);}}}} catch (Exception e) {e.printStackTrace();}}}
0 0
- Java递归和非递归遍历目录
- java 二叉树的递归遍历和非递归遍历
- 递归与非递归 遍历文件目录
- 递归与非递归遍历文件目录
- 非递归算法遍历目录
- java 递归遍历目录
- java递归遍历目录
- 【11】-java递归和非递归二叉树前序中序后序遍历
- JAVA二叉树遍历(递归和非递归)
- 二叉树的递归和非递归遍历(java)
- C# 递归遍历目录与非递归遍历目录
- JAVA 递归和非递归删除目录及文件
- Win32非递归遍历和搜索文件以及目录算法
- JAVA递归、非递归遍历二叉树
- JAVA二叉树先序遍历递归+非递归
- java递归,非递归遍历二叉树
- JAVA递归、非递归遍历二叉树
- 多叉树的递归和非递归遍历
- mysql ibdata1释放空间处理
- 【问卷调查】社团对海大学生成长的影响研究(及部分调查结果)
- Lua 简介
- 黑马程序员 JAVA学习笔记 ——反射
- apache的版本选择问题,bianry与src的区别,和安装问题。
- Java递归和非递归遍历目录
- Hadoop 稀疏矩阵乘法的MapReduce计算
- SQL server中将一个表中一列数据更新到另一个表中,该如何解决
- OCP 1Z0 051 30
- PAT 1012. 数字分类
- java读取二进制文件传给nodejs保存
- easyUI datagrid 表格 表头添加菜单,实现可选列。
- sun.misc.BASE64Encoder找不到jar包的解决方法
- 黑马程序员 JAVA学习笔记——交通灯管理系统