//recursive treeNode building private TreeNode GetTreeNode(DirectoryInfoWrapper dir) { var node = new TreeNode(dir.Name); foreach (var file in dir.Files) { node.Nodes.Add(file.Name); } foreach (var subDirectory in dir.SubDirectories) { node.Nodes.Add(GetTreeNode(subDirectory)); } return(node); }
public void RegisterDir(DirectoryInfoWrapper dir) { SubDirectories.Add(dir); }
//Recursive scan of folders and files private void TreeScan(string directory, DirectoryInfoWrapper parent = null) { if (!ValidateDirectoryPath(directory)) { return; } var fileInfos = new List <FileInfoWrapper>(); string[] files; try { files = Directory.GetFiles(directory); } catch (UnauthorizedAccessException ex) { ShowMesssage("Application have no access to some subfolder in selected root"); return; } var dir = new DirectoryInfoWrapper(directory); lock (_threadLock) { //remember root directory if (parent == null) { _holder = new ModelHolder(dir); } else { parent.RegisterDir(dir); } } //scaning for files foreach (string f in files) { FileInfoWrapper info; try { info = new FileInfoWrapper(f); } catch (FileNotFoundException e) { //we do not have to show to user this exception continue; } fileInfos.Add(info); } //register those files to current directory lock (_threadLock) dir.RegisterFiles(fileInfos); foreach (string d in Directory.GetDirectories(directory)) { TreeScan(d, dir); } }
public ModelHolder(DirectoryInfoWrapper hierarchy) { _hierarchy = hierarchy; }