Exemplo n.º 1
0
        private void WalkThroughTree(DirectoryInfo root, DirectoryItem structureItem, bool digDown)
        {
            FileInfo[]      files   = null;
            DirectoryInfo[] subdirs = null;

            try
            {
                files   = root.GetFiles();
                subdirs = root.GetDirectories();
                structureItem.PermissionToItem = PermissionStatus.P_GRANDED;
            }
            catch (UnauthorizedAccessException ex)
            {
                Console.WriteLine(ex.Message);
                structureItem.PermissionToItem = PermissionStatus.P_DENIED;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            structureItem.ClearItemsCollection();

            if (subdirs != null)
            {
                foreach (DirectoryInfo directoryInfo in subdirs)
                {
                    DirectoryItem currentStructureItem = new DirectoryItem(directoryInfo.Name, directoryInfo.FullName, RefreshChildItemsStructure)
                    {
                        Attributes = directoryInfo.Attributes,
                        Parent     = structureItem
                    };

                    structureItem.AddNewItem(currentStructureItem);

                    if (digDown)
                    {
                        WalkThroughTree(directoryInfo, currentStructureItem, true);
                    }
                }
            }

            if (files != null)
            {
                foreach (FileInfo fileInfo in files)
                {
                    FileItem currentStructureItem = new FileItem(fileInfo.Name, fileInfo.FullName)
                    {
                        Attributes = fileInfo.Attributes,
                        FileSize   = fileInfo.Length,
                        Parent     = structureItem
                    };

                    structureItem.AddNewItem(currentStructureItem);
                }
            }
        }