Поиск файлов на системном диске - C#

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

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

Добрый день. Имеется код на поиск файлов. Неделю пытался найти причину проблемы, поэтому пишу тут. Суть проблемы что поиск ведется на любом разделе, кроме системного. При поиске на системном разделе просто пустота. Пишу и отлаживаю все это дело я на виндовс 10. В безвыходной ситуации запустил случайно на 7 винде, и о чудо, поиск работает.В чем может быть проблема?
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Compression;

namespace ConsoleApplication1
 
{
    class Program
    {
       
        static void Main(string[] args)
        {
            IEnumerable<string> MyFiles = SafeEnumerateFilesWithLog(@"D:", "*.txt", SearchOption.AllDirectories);
            foreach (string fileName in MyFiles)
            {
                Console.WriteLine(fileName);
                
            }
            Console.ReadKey();
        }
        private static IEnumerable<string> SafeEnumerateFilesWithLog(string path, string searchPattern, SearchOption searchOption)
        {
            Stack<string> dirs = new Stack<string>();
            dirs.Push(path);
 
            while (dirs.Count > 0)
            {
                string currentDirPath = dirs.Pop();
                if (searchOption == SearchOption.AllDirectories)
                {
                    try
                    {
                        string[] subDirs = Directory.GetDirectories(currentDirPath);
                        foreach (string subDirPath in subDirs)
                        {
                            dirs.Push(subDirPath);
                        }
                    }
                    catch (UnauthorizedAccessException)
                    {
                        Console.WriteLine("GetDirectories: UnauthorizedAccessException for '{0}'" + currentDirPath);
                        continue;
                    }
                    catch (DirectoryNotFoundException)
                    {
                        Console.WriteLine("GetDirectories: DirectoryNotFoundException for '{0}'" + currentDirPath);
                        continue;
                    }
                }
 
                string[] files = null;
                try
                {
                    files = Directory.GetFiles(currentDirPath, searchPattern);
                }
                catch (UnauthorizedAccessException)
                {
                    Console.WriteLine("GetFiles: UnauthorizedAccessException for '{0}'" + currentDirPath);
                    continue;
                }
                catch (DirectoryNotFoundException)
                {
                    Console.WriteLine("GetFiles: DirectoryNotFoundException for '{0}'" + currentDirPath);
                    continue;
                }
 
                foreach (string filePath in files)
                {
                    yield return filePath;
                }
            }
        }
    }
    }

Решение задачи: «Поиск файлов на системном диске»

textual
Листинг программы
var directories = Directory.GetDirectories("C:");
Console.WriteLine(directories.Length);

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


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

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

5   голосов , оценка 3.8 из 5