public void CreateTestData() { MyFolders a = new MyFolders(); string s = "Gather1"; //单独新建题库Gather1 a.SetName(s); a.SetType(0); a.SetPath(s); //Node b = new Node();//测试原因暂时把Node b移出去方便调用,后面控制权限时需要重新构思 root.folders = a; root.SetMyType(false); root.parentFolders = root; //令parentFolder等于自己方便后续查找时候的退出条件 FoldersGather.Add(root); for (int i = 2; i <= 5; i++) //测试数据中的其他所有题库都是题库1的子题库 { MyFolders aa = new MyFolders(); string ss = "Gather"; char ii = (char)(i + '0'); //字符处理方便批量命名 ss += ii; aa.SetName(ss); aa.SetType(0); aa.SetPath("Gather1/" + ss); //路径为自己的加Gather1 Node bb = new Node(); bb.folders = aa; bb.SetMyType(false); bb.sonNode.Clear(); //把sonNode初始化全部清空 root.sonNode.Add(bb); //把所有其他题库都加进Gather1的sonNode表示子题库 /* * 这里引用的就是临时类bb地址,这里如果Gather1能够存取临时类指向的地址就说明指向正确 */ bb.parentFolders = root; //令parentFolder都指向Gather1 FoldersGather.Add(bb); } for (int i = 1; i <= 8; i++) //所有题目都是Gather1下的 { MyFiles aa = new MyFiles(); string ss = "Problem"; char ii = (char)(i + '0'); ss += ii; aa.SetName(ss); aa.SetType(1); aa.SetPath("Gather1/" + ss); Node bb = new Node(); bb.files = aa; bb.SetMyType(true); root.sonNode.Add(bb); bb.parentFolders = root; //parentFolder都指向Gather1 FilesGather.Add(bb); } } //end of CreateTestData
}//end of setNewFolders public void SetNewFiles(string name, string path)//不用public就无法访问这个函数,注意权限问题 { foreach (Node s in FilesGather) { if (name == s.files.GetName()) { Console.WriteLine("error:题目已经存在请重新确认"); } } MyFiles newFiles = new MyFiles();//新建类对象,记录name,path newFiles.SetName(name); newFiles.SetPath(path); newFiles.SetType(1); Node newNode = new Node();//新建节点记录类型和当前节点的信息 newNode.files = newFiles; newNode.type = true; FilesGather.Add(newNode); string parentName;//父亲节点的name for (int i = path.Length - 1; i >= 0; i--) { if (path[i] == '/') { path = path.Substring(i + 1, path.Length - i - 1); //使用截取有风险,后续需要更改方法 } } parentName = path; //得到自己父亲节点的name foreach (Node s in FoldersGather) //查找题库中的父亲题库 { if (parentName == s.folders.GetName()) { newNode.parentFolders = s; //指向自己的父亲节点 s.sonNode.Add(newNode); //父亲节点的sonNode结构体加入newNode,表示自己的直接儿子 //因为是引用,这里是不是可以更改存疑??????????? } } //怎么取得最后一个List??????迭代器??? Console.Write("新建题目 ");//这里只是展示,并不能表示赋值成功 Console.Write(newFiles.GetName()); Console.Write(" 查找新建路径:"); GetFilesPath(newFiles.GetName()); } //end of setNewFiles