Exemple #1
0
 public void AddNode(FileSystemNode node)
 {
     for (int i = 0; i < Nodes.Count; i++)
     {
         if (String.Compare(node.Object.Name, Nodes[i].Object.Name, false) < 0)
         {
             Nodes.Insert(i, node);
             return;
         }
     }
     Nodes.Add(node);
 }
Exemple #2
0
        private FileSystemNode Root; // root of tree

        private void SubBuild(FileSystemNode parent, DirectoryInfo[] dirs, FileInfo[] files)
        {
            FileSystemNode newNode = null;

            for (int i = 0; i < dirs.Length; i++)
            {
                newNode = new FileSystemNode(new FolderObject(dirs[i].FullName), parent);
                parent.AddNode(newNode);
                SubBuild(newNode, dirs[i].GetDirectories(), dirs[i].GetFiles());
            }
            for (int i = 0; i < files.Length; i++)
            {
                newNode = new FileSystemNode(new FileObject(files[i].FullName, files[i].LastAccessTime.ToFileTime()), parent);
                parent.AddNode(newNode);
            }
        }
Exemple #3
0
        private void SubDelete(FileSystemNode node, DateTime date)
        {
            if (node.Object.GetType() == typeof(FolderObject))
            {
                //начинаем с конца списка
                for (int i = node.Nodes.Count - 1; i >= 0; i--)
                {
                    SubDelete(node.Nodes[i], date);
                }

                //удаляем пустые папки кроме корня(его можно удалить в основном методе)
                if ((node.Nodes.Count == 0) && (node.Parent != null))
                {
                    node.Parent.Nodes.Remove(node);
                }
            }
            else
            {
                if (DateTime.FromFileTime(((FileObject)node.Object).LastAccessDate) < date)
                {
                    node.Parent.Nodes.Remove(node);
                }
            }
        }
Exemple #4
0
 public void Build(DirectoryInfo dir)
 {
     Root = new FileSystemNode(new FolderObject(dir.FullName), null);
     SubBuild(Root, dir.GetDirectories(), dir.GetFiles());
 }
Exemple #5
0
 public FileSystemNode(FileSystemObject obj, FileSystemNode parent)
 {
     Object = obj;
     Parent = parent;
     Nodes  = new List <FileSystemNode>();
 }