/// <summary> /// Initializes a new instance of the <see cref="FileFolderTree"/> class. /// </summary> /// <param name="baseDirectory">The base directory. </param> /// <param name="validExtensions">The file filter to apply. </param> public FileFolderTree(string baseDirectory, IEnumerable <string> validExtensions) { this.BaseDirectory = baseDirectory; this.ValidExtensions = validExtensions; var rootNode = new FileFolderNode { Id = baseDirectory, Name = Path.GetDirectoryName(baseDirectory), ParentId = Directory.GetParent(baseDirectory).FullName, IsDir = true }; this.Tree = new Tree <FileFolderNode>(rootNode); this.RecursiveDirectorySearch(); }
/// <summary> /// Searches a directory for files and folders. /// </summary> /// <param name="dir">The directory path.</param> /// <param name="parentNode">The parent node.</param> private void RecurseDirectory(string dir, Node <FileFolderNode> parentNode) { foreach (var directory in Directory.GetDirectories(dir)) { var fileFolderNode = new FileFolderNode { Name = Path.GetFileName(directory), Id = directory, ParentId = dir, IsDir = true }; var newNode = new Node <FileFolderNode>(fileFolderNode); this.PopulateFilesInFolder(directory, newNode); parentNode.Children.Add(newNode); this.RecurseDirectory(directory, newNode); } }
/// <summary> /// Encodes the file paths in a file folder node to base 64. /// </summary> /// <param name="node">The file folder node.</param> /// <returns>The <see cref="FileFolderNode"/> encded in base 64.</returns> private FileFolderNode EncodeFilePaths(FileFolderNode node) { node.Id = Base64.Encode(node.Id); node.ParentId = Base64.Encode(node.ParentId); return(node); }