public FileIndexor(string path) { RootDirectory = path; if (!path.EndsWith("\\")) { RootDirectory += "\\"; } irecu(path); directory_list.Sort(); node = new FileIndexorNode(path, 0); inode(); }
/// <summary> /// 입력된 주소에 해당하는 인덱서 노드를 반환합니다. /// </summary> /// <param name="path"></param> /// <returns></returns> public FileIndexorNode GetPathNode(string path) { string[] seperated = path.Split('\\'); string section = ""; FileIndexorNode n = node; for (int i = 0; i < seperated.Length; i++) { section += seperated[i] + '\\'; foreach (FileIndexorNode nd in n.Nodes) { if (nd.Path == section) { n = nd; break; } } } return(n); }
private void inode() { for (; index < directory_list.Count - 1; index++) { try { FileIndexorNode m = new FileIndexorNode(directory_list[index].Item1, directory_list[index].Item2); if (directory_list[index + 1].Item1.Contains(directory_list[index].Item1)) { node.AddItem(m); index += 1; iinode(ref m); break; } } catch (Exception ex) { error_list.Add(new Tuple <string, string>("inode", ex.ToString())); } } }
private void iinode(ref FileIndexorNode node) { for ( ; index < directory_list.Count; index++) { if (directory_list[index].Item1.Contains(node.Path)) { FileIndexorNode m = new FileIndexorNode(directory_list[index].Item1, directory_list[index].Item2); node.AddItem(m); if (index < directory_list.Count - 1 && directory_list[index + 1].Item1.Contains(directory_list[index].Item1)) { index++; iinode(ref m); } node.Size += m.Size; } else { index--; break; } } }
public void AddItem(FileIndexorNode node) { nodes.Add(node); }