展开全部
我跟你62616964757a686964616fe58685e5aeb931333431343634讲一种方式,我刚刚想了一下,你最好是在得到你list数据的时候就开始组装,这样是最好的,得到list数据无非是文件递归嘛,当递归到出口的时候,你就放进去,如果是文件夹也往里放。
代码刚写好了。import com.alibaba.fastjson.JSONObject;
import java.io.File;
import java.net.URL;
import java.util.LinkedList;
import java.util.List;
/**
* @Package com.xhxh.zhidao
* @Description json convert
* @Author xiehua
* @Date 2019-03-08 16:28
*/
public class FileDomain {
private String name;
private List packages = new LinkedList<>();
public FileDomain() {
}
public FileDomain(String name) {
this.name = name;
}
public List getPackages() {
return packages;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "FileDomain{" +
"name='" + name + '\'' +
", packages=" + packages +
'}';
}
public static void main(String[] args) {
FileDomain fileDomain = new FileDomain("com.xhxh");
fileDomain.readFiles("com.xhxh", fileDomain);
String s = JSONObject.toJSONString(fileDomain);
System.out.println(s);
}
public void readFiles(String scanPackage, FileDomain fileDomain) {
URL url = this.getClass().getClassLoader().getResource(scanPackage.replaceAll("\\.", "/"));
File classDir = new File(url.getFile());
for (File file :
classDir.listFiles()) {
if (file.isDirectory()) {
FileDomain temFileDomain = new FileDomain(scanPackage + "." + file.getName());
fileDomain.getPackages().add(temFileDomain);
readFiles(scanPackage + "." + file.getName(), temFileDomain);
} else {
FileDomain temFileDomain = new FileDomain(scanPackage + "." + file.getName());
fileDomain.getPackages().add(temFileDomain);
}
}
}
}