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); }
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); } }
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); } } }
public void Build(DirectoryInfo dir) { Root = new FileSystemNode(new FolderObject(dir.FullName), null); SubBuild(Root, dir.GetDirectories(), dir.GetFiles()); }
public FileSystemNode(FileSystemObject obj, FileSystemNode parent) { Object = obj; Parent = parent; Nodes = new List <FileSystemNode>(); }