public override void CopyData(Node src) { Symlink s = src as Symlink; this.target = s.target; this.targetIndex = s.targetIndex; }
public Node CreateNode(int nodeType, string name, Node parent) { Node n; switch (nodeType) { case 0: n = new File(name, parent, this); CreateNodeIndex(n); return(n); case 1: n = new Floder(name, parent, this); CreateNodeIndex(n); return(n); case 2: n = new Symlink(name, parent, this); CreateNodeIndex(n); return(n); default: return(null); } }
public override Disk Execute(Disk disk, string param) { string path = ""; string addPar = ""; CmdStrTool.SplitParam(param, addParam, out path, out addPar); if (string.IsNullOrEmpty(path)) { CmdStrTool.ShowTips(1); return(null); } else { string[] paths = CmdStrTool.SplitPathParamToPathList(path); if (paths.Length != 2) //参数不对 { CmdStrTool.ShowTips(1); } else { string[] namelist1 = CmdStrTool.SplitPathToNameList(paths[0]); string newname = namelist1.Last(); //最后一个是新name Node n1; //n1为新建文件的父节点 if (namelist1.Length > 1) { string[] namelist = new string[namelist1.Length - 1]; Array.Copy(namelist1, namelist, namelist1.Length - 1); n1 = disk.NameListToNode(namelist, IsSupportWildcard); } else { n1 = disk.current; } //n2为link的目标结点 string[] namelist2 = CmdStrTool.SplitPathToNameList(paths[1]); Node n2 = disk.NameListToNode(namelist2, IsSupportWildcard); if (n1 == null || n2 == null) { CmdStrTool.ShowTips(2); } else { Symlink s = disk.CreateNode(2, newname, n1) as Symlink; s.SetLinkTarget(n2); Console.WriteLine("创建链接{0}--->{1}", s.GetPath(), n2.GetPath()); } } } return(null); }