//============================================================ // <T>增加一个子目录。</T> // // @param folder 子目录 //============================================================ public void PushFolder(FCfgFolder folder) { if (folder != null) { folder.Parent = this; Folders.Push(folder); } }
//============================================================ // <T>创建一个子对象。</T> // // @param name 名称 // @return 子对象 //============================================================ public virtual FCfgFolder CreateFolder(string name) { // 创建目录 FCfgFolder folder = new FCfgFolder(); folder.Name = name; folder.Directory = _directory + "\\" + name; PushFolder(folder); // 创建文件目录 System.IO.Directory.CreateDirectory(folder.Directory); return(folder); }
//============================================================ // <T>加载目录信息。</T> // // @param path 目录 //============================================================ public virtual void OnLoadFolder(string path) { // 重设名称 string name = path.Substring(path.LastIndexOf("\\") + 1); // 加载子目录 FCfgFolder floder = CreateFolder(name); floder.Name = name; floder.Directory = path; floder.LoadFolderAll(); // 增加到列表 PushFolder(floder); }
//============================================================ // <T>获取顶层目录。</T> // // @return 目录 //============================================================ public FCfgFolder FetchFolderTop() { FCfgFolder find = this; while (find != null) { if (find.Parent == null) { return(find); } find = find.Parent; } return(null); }
//============================================================ // <T>获取层级目录集合。</T> // // @return 目录集合 //============================================================ public FObjects <FCfgFolder> FetchFolderStack(bool constainsSelf = true) { FObjects <FCfgFolder> stack = new FObjects <FCfgFolder>(); FCfgFolder find = this; while (find != null) { if (constainsSelf) { stack.Push(find); } else if (find != this) { stack.Push(find); } find = find.Parent; } stack.Reverse(); return(stack); }
//============================================================ // <T>获取相对目录。</T> // // @return 目录 //============================================================ public string FolderPath() { FCfgFolder folder = FetchFolderTop(); return(_directory.Substring(folder.Directory.Length)); }