예제 #1
0
        //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);
        }
예제 #2
0
 public void RegisterDir(DirectoryInfoWrapper dir)
 {
     SubDirectories.Add(dir);
 }
예제 #3
0
        //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);
            }
        }
예제 #4
0
 public ModelHolder(DirectoryInfoWrapper hierarchy)
 {
     _hierarchy = hierarchy;
 }