首页 > 代码库 > Java非递归的方式获取目录中所有文件(包括目录)
Java非递归的方式获取目录中所有文件(包括目录)
零、思路解析
对于给出的文件查看其下面的所有目录,将这个目录下的所有目录放入待遍历的目录集合中,每次取出该集合中的目录遍历,如果是目录再次放入该目录中进行遍历。
一、代码
/** * 非递归的方式获取目录中的所有文件<br> * 此方法获取的路径未按照目录->文件方式排列 * * @param dirPath 目录路径 * @return 指定目录下所有文件和目录的集合 */ public static List<File> listAllFile(String dirPath) { LinkedList<File> allFiles = new LinkedList<>(); if ("".equals(dirPath) || null == dirPath) { return allFiles; } File file = new File(dirPath); allFiles.add(file);//添加自己 if (file.isFile()) { return allFiles; } File[] fileList = file.listFiles(); if (fileList == null || fileList.length == 0) { return allFiles; } //将第一次获取到的文件和目录放入总集合中 allFiles.addAll(Arrays.asList(fileList)); //声明存放目录的集合 LinkedList<File> dirCheckList = new LinkedList<>(); //处理第一层目录 for (File curFile : fileList) { if (curFile.isDirectory()) { dirCheckList.add(curFile); } } while (!dirCheckList.isEmpty()) { File removeDir = dirCheckList.removeFirst();//移除首位的目录 File[] removeDirFileList = removeDir.listFiles(); if (removeDirFileList == null) { continue; } //将找出的所有的文件和目录加入到总集合中 allFiles.addAll(Arrays.asList(removeDirFileList)); for (File curFile : removeDirFileList) { if (curFile.isDirectory()) { dirCheckList.add(curFile); } } } return allFiles; }
Java非递归的方式获取目录中所有文件(包括目录)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。