Ejemplo n.º 1
0
        public void ConstructTreeDfs(Folder dir)
        {
            var directory = new ZlpDirectoryInfo(dir.Name);
            if (directory.Exists)
            {
                ZlpDirectoryInfo[] childDirs;
                try
                {
                    childDirs = directory.GetDirectories();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    return;
                }

                var childFolders = new Folder[childDirs.Length];
                for (var i = 0; i < childDirs.Length; i++)
                {
                    childFolders[i] = new Folder(childDirs[i].FullName);
                }
                dir.AddChildFolders(childFolders);

                var files = directory.GetFiles();
                var f = new File[files.Length];
                for (var i = 0; i < files.Length; i++)
                {
                    try
                    {
                        f[i] = new File(files[i].FullName, files[i].Length);
                    }
                    catch (Exception)
                    {

                        continue;
                    }
                }
                dir.AddFiles(f);
                if (DeepWalk)
                {
                    foreach (var item in childFolders)
                    {
                        ConstructTreeDfs(item);
                    }
                }
            }

        }
Ejemplo n.º 2
0
        public void ConstructTreeDfs(Folder dir)
        {
            var directory = new DirectoryInfo(dir.Name);

            List<DirectoryInfo> childDirs;
            try
            {
                childDirs = directory.GetDirectories().ToList();
            }
            catch (UnauthorizedAccessException)
            {
                return;
            }

            var childFolders = new Folder[childDirs.Count];
            for (var i = 0; i < childDirs.Count; i++)
            {
                childFolders[i] = new Folder(childDirs[i].FullName);
            }
            dir.AddChildFolders(childFolders);

            var files = directory.GetFiles();
            var f = new File[files.Length];
            for (var i = 0; i < files.Length; i++)
            {
                f[i] = new File(files[i].FullName, files[i].Length);
            }
            dir.AddFiles(f);
            if (DeepWalk)
            {
                foreach (var item in childFolders)
                {
                    ConstructTreeDfs(item);
                }
            }
        }
Ejemplo n.º 3
0
 public FileTree(string rootPath, bool deepWalk = false)
 {
     RootFolder = new Folder(rootPath);
     DeepWalk = deepWalk;
     ConstructTreeDfs(RootFolder);
 }
Ejemplo n.º 4
0
 public void AddChildFolders(Folder[] folders)
 {
     ChildFolders = folders;
 }
Ejemplo n.º 5
0
 public Folder(string name, File[] files, Folder[] childFolders)
 {
     Name = name;
     Files = files;
     ChildFolders = childFolders;
 }
Ejemplo n.º 6
0
 public long CalculateFilesSizesDfs(Folder startFolder, string searchForFolder, bool isFound)
 {
     long sizeInBytes = 0;
     if (startFolder.Name == searchForFolder)
     {
         isFound = true;
     }
     if (!isFound)
     {
         foreach (var item in startFolder.ChildFolders.Where(item => item.Name == searchForFolder))
         {
             isFound = true;
             sizeInBytes += CalculateFilesSizesDfs(item, searchForFolder, true);
             break;
         }
         return sizeInBytes;
     }
     if (startFolder.Files != null)
     {
         sizeInBytes += startFolder.Files.Sum(item => item.FileSize);
     }
     if (startFolder.ChildFolders == null) return sizeInBytes;
     {
         sizeInBytes += startFolder.ChildFolders.Sum(item => CalculateFilesSizesDfs(item, searchForFolder, true));
     }
     return sizeInBytes;
 }