public IDirectory GetDirectory(string directoryName) { if (Path.IsPathRooted(directoryName)) { return(FileSystem.GetDirectory(directoryName)); } InMemoryDirectory inMemoryDirectory; lock (ChildDirectories) { inMemoryDirectory = ChildDirectories.FirstOrDefault(x => x.Name.Equals(directoryName, _stringComparison)); if (inMemoryDirectory == null) { inMemoryDirectory = new InMemoryDirectory(_fileSystem, System.IO.Path.Combine(Path.FullPath, directoryName)) { Parent = this }; ChildDirectories.Add(inMemoryDirectory); } } return(inMemoryDirectory); }
private void GetDirInfo() { var di = new DirectoryInfo(FullPath); Name = di.Name; Created = di.CreationTime; LastWrite = di.LastWriteTime; var dirs = Directory.EnumerateDirectories(FullPath).AsParallel(); var files = Directory.EnumerateFiles(FullPath); if (dirs.Count() == 0 && files.Count() == 0) { TerminalLeaf = true; } if (dirs.Count() > 0) { foreach (var d in dirs) { ChildDirectories.Add(Path.GetFileName(d)); } } if (files.Count() > 0) { foreach (var f in files) { ChildFiles.Add(Path.GetFileName(f)); } } }
//constructor takes a directory and a parent and gets its size and name and creates a new treefile for all of its subdirectories // the parent is used to get the percent of parent parameter public Treefile(DirectoryInfo d, long parent) { Name = d.Name; numberoffiles = 0; numberofdirectories = 0; Size = getSize(d); myDir = d; this.parent = parent; this.percentsize = calculatepercent(); foreach (var child in d.EnumerateDirectories()) { this.numberofdirectories += 1; Treefile childtree = new Treefile(child, this.Size); ChildDirectories.Add(childtree); } foreach (var c in myDir.EnumerateFiles()) { this.numberoffiles += 1; Childfiles.Add(c); } }
/// <summary> /// Scans the tree to find all images, and all shortcuts to images. /// </summary> /// <param name="token"></param> public void Populate(CancellationToken token) { ScanStarted?.Invoke(new DirectoryScanInfo { Directory = DirectoryInfo }); if (token.IsCancellationRequested) { return; } try { EnsureShortcutUtility(); List <ImageItem> children = new List <ImageItem>(); ImageItem child; foreach (var file in DirectoryInfo.EnumerateFilesByExtensions(Constants.IMAGE_FILE_EXTENSIONS_PLUS_LINK)) { if (token.IsCancellationRequested) { return; } child = new ImageItem(file, ShortcutUtility); if (child.IsImage) { children.Add(child); } } if (token.IsCancellationRequested) { return; } AddDescendants(children, 0); EnsureBlacklist(); foreach (var subDir in DirectoryInfo.EnumerateDirectories()) { if (token.IsCancellationRequested) { return; } if (!BlacklistExcludes(subDir.FullName) && !subDir.Attributes.HasFlag(FileAttributes.System)) { var subTreeDir = new ImageTreeDirectory(subDir, this) { Blacklist = Blacklist, ShortcutUtility = ShortcutUtility }; subTreeDir.ScanStarted += ScanStarted; subTreeDir.ScanFailed += ScanFailed; subTreeDir.Populate(token); if (token.IsCancellationRequested) { return; } ChildDirectories.Add(subTreeDir); } } IsPopulated = true; } catch (Exception ex) { ScanFailed?.Invoke(new DirectoryScanInfo { Directory = DirectoryInfo, Exception = ex }); } }
internal void AddDirectory(ApplicationDirectoryState state) { ChildDirectories.Add(state); }