测试数据类型:
E:\Chrome下载文件\src\t
E:\Chrome下载文件\index
E:\Chrome\index\test
E:\Chrome下载文件\chen
E:\Chrome下载文件\ding
E:\Chrome下载文件\jia
数据结构类:
public class FileConstruction
{
public string title { get; set; }
public string key { get; set; }
public List<FileConstruction> children = new List<FileConstruction>();
}
所需要得到的数据结构:
{
"children": [{
"children": [{
"children": [{
"children": [{
"children": [{
"children": [],
"title": "leve",
"key": null
}],
"title": "test",
"key": null
}, {
"children": [],
"title": "leve",
"key": null
}],
"title": "src",
"key": null
}],
"title": "Chrome下载文件",
"key": null
}],
"title": "E:",
"key": null
}],
"title": null,
"key": null
}
自己想了老久了,有些地方可能还需要优化,代码冗余等等。。
//构建目录
public static void BuildDirectory(FileConstructionfs,List<string> list)
{
var temp = new FileConstruction();
List<FileConstruction> judges = new List<FileConstruction>();
for(int index=0;index<list.Count;index++)
{
int count = list[index].Split('\\').Count();
string[] str=list[index].Split('\\');
for(int i=0;i<count;i++)
{
FileConstructionfm = new FileConstruction();
fm.title = str[i];
judges = temp.children;
var flag = Judge(judges, str[i]);
if (i!=0)
{
if (flag!=null)
{
temp = flag;
}
else
{
temp.children.Add(fm);
temp = fm;
}
}
else
{
if (flag != null)
{
temp = flag;
}
else
{
temp = fm;
fs.children.Add(temp);
}
}
}
temp = fs;
}
}
//查重
public static FileConstructionJudge(List<FileConstruction> fs,string target)
{
var temp = new FileConstruction();
for(int index=0;index<fs.Count;index++)
{
if(fs[index].title==target)
{
temp = fs[index];
return temp;
}
}
return null;
}
版权声明:本文为CJY8080原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。