public BTree <Node> GetFiles(string filename) { var treelevel_0 = new BTree <Node>(); treelevel_0.Data = new Node("文件", "", true); var namegroup = ""; var currentnode = treelevel_0; var parentnode = treelevel_0; //上一级 var grandparentnode = treelevel_0; //上上级 bool hasfiles = false; if (File.Exists(filename)) { using (var sr = File.OpenText(filename)) { var s = ""; while ((s = sr.ReadLine()) != null) { if (s.IndexOf("type_name") <= 0) { continue; } if (s.IndexOf("xml_contents_version") >= 0) { continue; } var ssspaces = s.Split(' '); foreach (var sss in ssspaces) { var ssequals = sss.Split('='); if ((ssequals != null) && ssequals.Length == 2 && ssequals[0].Equals("name")) { namegroup = ssequals[1].Split('"')[1]; } if ((ssequals != null) && ssequals.Length == 2 && ssequals[0].Equals("persistent")) { if (ssequals[1].Split('"')[1].Length == 0) { //文件夹 var tnode = new BTree <Node>(); tnode.Data = new Node(namegroup, "", true); if (hasfiles) { //已经有文件 parentnode.AddNode(tnode); currentnode = tnode; } else { //一直是文件夹 currentnode.AddNode(tnode); grandparentnode = parentnode; parentnode = currentnode; currentnode = tnode; } hasfiles = false; } else { //文件 if (ssequals[1].Split('"')[1].IndexOf(".cyprj") >= 0) { //工程名称 treelevel_0.Data.Name = ssequals[1].Split('"')[1]; hasfiles = false; } else if (ssequals[1].Split('"')[1].IndexOf(".cydwr") >= 0) { //特殊目录 hasfiles = false; } else if (ssequals[1].Split('"')[1].IndexOf("TopDesign") >= 0) { //特殊目录 hasfiles = false; } else if ((ssequals[1].Split('"')[1].IndexOf("Generated_Source") >= 0) && ((ssequals[1].Split('"')[1].Length == "Generated_Source".Length))) { //特殊目录 var tree3 = new BTree <Node>(); tree3.Data = new Node(ssequals[1].Split('"')[1]); treelevel_0.AddNode(tree3); grandparentnode = treelevel_0; parentnode = treelevel_0; currentnode = tree3; hasfiles = false; } else if ((ssequals[1].Split('"')[1].IndexOf(@"Generated_Source\PSoC5") >= 0) && ((ssequals[1].Split('"')[1].Length == @"Generated_Source\PSoC5".Length))) { //特殊目录 var tree3 = new BTree <Node>(); tree3.Data = new Node(ssequals[1].Split('"')[1]); tree3.Data.Name = "PSoC5"; currentnode.AddNode(tree3); grandparentnode = parentnode; parentnode = currentnode; currentnode = tree3; grandparentnode = parentnode; parentnode = currentnode; hasfiles = false; } else { //常规文件 var tree3 = new BTree <Node>(); tree3.Data = new Node(ssequals[1].Split('"')[1]); currentnode.AddNode(tree3); hasfiles = true; } } } } } } } return(treelevel_0); }