数据: [ZZDS - 副本\tool\fonts\etc\,$Extend\,x64 - 副本\zh-Hans\aaaaaa\,
x64 - 副本\1028\aaaaaaa\,x64 - 副本\1028\aaaaaaa\bbbbbbbbbbb\,
x64 - 副本\1028\aaaaaaa\bbbbbbbbbbb\zh-Hant\,a1\,a1\a2\,a1\a2\a3\,a1\a2\a3\a4\,
a1 - 副本\,a1 - 副本\a2\,a1 - 副本\a2\a3\,a1 - 副本\a2\a3\a4\]
var g_rootData=[]; 全局变量 先拿到一个根目录里面的第一个数据:
g_rootData = {
sName:H:\,
sChild:[]
};
for(var i = 0;i<param.length;i++)
{
InsertIntoTree(param[i],g_rootData);循环里面调用
}
function InsertIntoTree(param,node) //递归遍历
{
stdout.println("param: "+param+" ,node: "+node.sName);
var iFind = param.indexOf('\\');
stdout.println("iFind = "+iFind);
var vName = param;
var vPath = "";
if(iFind>0)
{
vPath = param;
vName = vName.splice(iFind,vName.length);
vPath = vPath.splice(0,iFind+1);
}
stdout.println("iFind: "+iFind+" ,vName: "+vName+" ,path: "+vPath);
var vChild;
vChild =
{
sName:vName,
sChild:[]
}
node.sChild.push(vChild);
if(vPath.length)
{
InsertIntoTree(vPath,vChild);
}
}
function printTree(node ,path) //输出打印
{
stdout.println("path: "+path+" ,name:"+node.sName);
var i;
var vNextPath = node.sName;
if(path.length)
{
vNextPath = path +"\\"+ node.sName;
}
for(i=0;i<node.sChild.length;i++)
{
printTree(node.sChild[i],vNextPath);
}
}
结果:
path: H:\ ,name:a1
path: H:\ ,name:a1
path: H:\\a1 ,name:a2
path: H:\ ,name:a1
path: H:\\a1 ,name:a2
path: H:\\a1\a2 ,name:a3
path: H:\ ,name:a1
path: H:\\a1 ,name:a2
path: H:\\a1\a2 ,name:a3
path: H:\\a1\a2\a3 ,name:a4
path: H:\ ,name:a1 - 副本
path: H:\ ,name:a1 - 副本
path: H:\\a1 - 副本 ,name:a2
path: H:\ ,name:a1 - 副本
path: H:\\a1 - 副本 ,name:a2
path: H:\\a1 - 副本\a2 ,name:a3
path: H:\ ,name:a1 - 副本
path: H:\\a1 - 副本 ,name:a2
path: H:\\a1 - 副本\a2 ,name:a3
path: H:\\a1 - 副本\a2\a3 ,name:a4