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);
        }
Exemplo n.º 2
0
        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));
                }
            }
        }
Exemplo n.º 3
0
            //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);
                }
            }
Exemplo n.º 4
0
        /// <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
                });
            }
        }
Exemplo n.º 5
0
 internal void AddDirectory(ApplicationDirectoryState state)
 {
     ChildDirectories.Add(state);
 }