コード例 #1
0
ファイル: FileIndexor.cs プロジェクト: rollrat/ftag
 public FileIndexor(string path)
 {
     RootDirectory = path;
     if (!path.EndsWith("\\"))
     {
         RootDirectory += "\\";
     }
     irecu(path);
     directory_list.Sort();
     node = new FileIndexorNode(path, 0);
     inode();
 }
コード例 #2
0
ファイル: FileIndexor.cs プロジェクト: rollrat/ftag
        /// <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);
        }
コード例 #3
0
ファイル: FileIndexor.cs プロジェクト: rollrat/ftag
 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()));
         }
     }
 }
コード例 #4
0
ファイル: FileIndexor.cs プロジェクト: rollrat/ftag
 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;
         }
     }
 }
コード例 #5
0
ファイル: FileIndexorNode.cs プロジェクト: rollrat/ftag
 public void AddItem(FileIndexorNode node)
 {
     nodes.Add(node);
 }