import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
/**
* 文件目录转成树结构
* @author lph
*/
public class FileTreeUtil {
/**
* 用来存放数据 可存库
*/
private static List<Tree> list = new ArrayList<>();
/**
* 因为测试使用,当初主键id来用
*/
private static Integer id = 0;
public static void main(String[] args) {
//扫描此文件夹下面的所有文件
String filepath = "e://test";
//初始化父节点id
int parentid = 0;
try {
file(filepath, parentid);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
for (int i = 0; i < list.size(); i++) {
Tree tree = list.get(i);
System.out.println("id== " + tree.getId() + " parentId== " + tree.getParentId() + " url== " + tree.getPath());
}
}
public static void file(String filepath, int parentid) throws FileNotFoundException {
File file = new File(filepath);
//1.判断文件
if (!file.exists()) {
throw new FileNotFoundException("文件不存在");
}
//2.文件
if (file.isFile()) {
String name = file.getName();
String path = file.getAbsolutePath();
Tree tree = new Tree(id++, name, path, parentid);
list.add(tree);
return;
}
//3.获取文件夹路径下面的所有文件递归调用;
if (file.isDirectory()) {
String name = file.getName();
String path = file.getAbsolutePath();
Tree tree = new Tree(id++, name, path, parentid);
list.add(tree);
String[] list = file.list();
for (int i = 0; i < list.length; i++) {
String s = list[i];
//根据当前文件夹,拼接其下文文件形成新的路径
String newFilePath = path + "\\" + s;
file(newFilePath, tree.getId());
}
}
}
}
class Tree {
private Integer id;
//文件夹或者文件名称
private String name;
//全路径,或则部分路径,自己决定
private String path;
//父节点id
private Integer parentId;
public Tree() {
}
public Tree(Integer id, String name, String path, Integer parentId) {
this.id = id;
this.name = name;
this.path = path;
this.parentId = parentId;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
@Override
public String toString() {
return "Tree{" +
"id=" + id +
", name='" + name + '\'' +
", path='" + path + '\'' +
", parentId=" + parentId +
'}';
}
}
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java递归获取树形结构数据
java递归获取树形结构数据
List 递归 java -
Java 树结构递归求和
队列:队列是指允许在一端进行插入操作,在另一端进行删除操作的线性表。允许插入的一端称为队尾,允许删除的一端称为对头。 队列中的元素除了具有线性关系外,还具有先进先出的特性。1.队列的顺序存储结构及实现——循环队列 将存储队列的数组看成是头尾相接的
Java 树结构递归求和 循环队列 JAVA实现 ci 结点 链队列 -
将RSTP视频流转为WebRtc格式,在浏览器播放
vue3实现ratp视频流转webrtc
#webrtc #vue.js ide 视频流 服务器 -
Java处理PDF就靠它!Apache PDFBox:开源免费的PDF全能王
无论是自动化报表生成还是文档分析系统,它都能提供可靠支持。结合本文的代码示例与避坑指南,可快速构建稳健的。本文只是简单的介绍了其部分功能,里面还有很多深藏的功能,等待你去挖掘!的内容提取、分割、合并等操作。可以看出打印和输出的图片名称和图片。主要提供了8个功能,通过演示几个常用的功能,了解一下。文档的开源 Java 工具。文档、作现有文档以及从文档中提取内容的能力。案例提取了一张网约车发票的信息。这里为了方便截图,将三张图展示在了一起。设计和强大的底层能力,成为。的解析、生成与操作难题。
#java #pdf #apache #pdfbox Apache
















