Поиск всех файлов/папок (включая вложенные) и обход тех, доступ к которым закрыт - C#

Узнай цену своей работы

Формулировка задачи:

Нужна программа, реализующая поиск всех файлов, папок(включая вложенные) в заданной пользователем директории. Таких программ море в сети, сам уже многое нашел, но не могу справиться с парой моментов: 1) Не включать в поиск скрытые файлы и папки. Я же пока только смог избавиться от скрытых файлов, и не могу правильно реализовать то же самое с папками. 2) Избавиться от "Отказано в доступе". Нужно исключить из поиска те папки, к которым у меня нет доступа. Например я ищу в директории c:\Users\Public и мне нужно исключить папку "Мои видеозаписи"(c:\Users\Public\Documents\Мои видеозаписи) из поиска, к которой у меня и выскакивает это исключение. Спасибо за помощь. Вот то, что у меня есть:
class Program
    {
        static void DirSearch(string sDir)
        {
            try
            {
                foreach (string d in Directory.GetDirectories(sDir))
                {
                    
                    Console.WriteLine(d);
                   
                    DirectoryInfo directory = new DirectoryInfo(d);
                    FileInfo[] files = directory.GetFiles();
 
                    var filtered = files.Select(f => f)
                                        .Where(f => (f.Attributes & FileAttributes.Hidden) == 0);
 
                    foreach (var f in filtered)
                    {
                        Console.WriteLine(f.FullName);
                    }
                    DirSearch(d);
                }
              
            }
            catch (System.Exception )
            {
               
            }
        }
        static void Main(string[] args)
        {
          
            string path = @"c:\Users\Public";
            DirSearch(path);
            Console.ReadLine();
        }
    }

Решение задачи: «Поиск всех файлов/папок (включая вложенные) и обход тех, доступ к которым закрыт»

textual
Листинг программы
(directory.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы