使用递归遍历文件夹构建文件树(一)
来源:互联网 发布:最新手机号段数据库 编辑:程序博客网 时间:2024/06/09 22:48
前一段时间写了一个遍历指定路径下的文件夹,并得到指定格式的目标文件,之后构建文件树的一个小程序。
首先定义文件数据传输对象:
public class FileDto {private String name;private String id;private List<FileDto> children;private boolean isParent = true;public boolean isParent() {return isParent;}public void setParent(boolean isParent) {this.isParent = isParent;}public String getName() {return name;}public List<FileDto> getChildren() {return children;}public void setChildren(List<FileDto> children) {this.children = children;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}}
遍历文件夹得到文件树结构:
private FileDto getFiles(String filePath, FileDto fileDto,MamFileEndFilter fileNameFilter){File root = new File(filePath);//过滤文件名File[] first = root.listFiles(fileNameFilter);//过滤文件File[] second = root.listFiles(new MamFolderFilter());//符合要求的文件File[] files = ArrayUtils.addAll(first, second);if(files == null || files.length == 0){return null; }List<FileDto> fileList = new ArrayList<>();for(File file:files){FileDto dto = new FileDto(); if(file.isDirectory()){ String str = file.getName(); dto.setId(str); dto.setName(str); fileList.add(dto); //递归调用 if(file.listFiles().length != 0){ getFiles(file.getAbsolutePath(),dto,fileNameFilter); } }else if(files != null && files.length != 0){ FileDto valueDto = new FileDto(); valueDto.setId(file.getName()); valueDto.setName(file.getName()); valueDto.setParent(false); fileList.add(valueDto); }}fileDto.setChildren(fileList);return fileDto;}
filePath为文件路径,fileDto为文件DTO(fileDto已经设置了根节点),fileNameFilter为文件后缀过滤器文件夹过滤器:
public class MamFolderFilter implements FileFilter {@Overridepublic boolean accept(File pathname) {if(pathname.isDirectory())return true;return false;}}
文件后缀过滤器:
public class MamFileEndFilter implements FilenameFilter { private String[] suffixs = null; public MamFileEndFilter(String[] suffixs){ this.suffixs = suffixs; } @Override public boolean accept(File dir, String name) { return isNeed(name, suffixs); }}public boolean isNeed(String fileName,String[] ends){ boolean tag = false; boolean flag = false; for(String s : ends){ if (fileName.toLowerCase().endsWith(s)){ tag = true; } if(tag == true){ flag = true; } } return flag; }好,如此便可以构成文件树。注意:该方法非动态构建文件树。
0 0
- 使用递归遍历文件夹构建文件树(一)
- 递归遍历文件(文件夹)
- 使用递归遍历文件夹
- C++递归遍历文件夹(一)
- 递归遍历文件夹查找文件
- 使用CFileFind遍历递归删除文件和文件夹
- Node.js使用递归实现遍历文件夹中所有文件
- 1.0使用递归操作遍历文件夹下的所有文件
- Java使用递归遍历文件夹
- python-遍历文件夹与递归遍历文件
- 遍历文件夹下所有文件(递归调用)
- 【典型例题】遍历文件夹下面的文件;(递归算法)
- 递归算法(遍历文件夹)
- C++遍历文件夹,使用boost filesystem递归遍历文件夹
- C++遍历文件夹,使用boost filesystem递归遍历文件夹
- C++遍历文件夹,使用boost filesystem递归遍历文件夹
- java 遍历递归操作(改名) 文件/文件夹
- 采用递归遍历删除包含文件文件夹
- Android中图像变换Matrix的原理、代码验证和应用
- phpcms 搜索功能出不来可能原因
- Populating Next Right Pointers in Each Node II
- 分割3通道
- 聊聊并发 java线程池的分析和使用
- 使用递归遍历文件夹构建文件树(一)
- 程序员与搜索引擎
- tcpipsockestinjava的网页资料
- c3p0的一个简单入门示例
- 关于Oracle的XMLType类型的数据库操作
- 你知道PHPthinking吗?
- Gas Station
- Geohash算法
- Gson使用教程