.NET 4.x Глобальный поиск файла - C#
Формулировка задачи:
Всем доброго времени суток. Столкнулся с проблемой поиска файлов на компьютере при помощи
System.IO.DirectoryInfo.GetFiles()
; При попытке осуществить поиск вываливается ошибка:Отказано в доступе по пути "C:\Documents and Settings"
и это с учетом того что я обладаю правами админа, и доступ к этой папке у меня свободный.Мой код:
Листинг программы
- using System;
- using System.IO;
- namespace testApp
- {
- internal class Program
- {
- private static void Main(string[] args)
- {
- string[] localDrivers = Directory.GetLogicalDrives();
- foreach (string drive in localDrivers)
- {
- DirectoryInfo dirInfo = new DirectoryInfo(drive);
- FileInfo[] result = dirInfo.GetFiles("CSService.log", SearchOption.AllDirectories);
- foreach (var file in result)
- Console.WriteLine("найден" + file.FullName);
- }
- Console.WriteLine("Готово");
- Console.ReadKey();
- }
- }
- }
Решение задачи: «.NET 4.x Глобальный поиск файла»
textual
Листинг программы
- private static IEnumerable<string> SafeEnumerateFiles(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)
- {
- continue;
- }
- catch (DirectoryNotFoundException)
- {
- continue;
- }
- }
- string[] files = null;
- try
- {
- files = Directory.GetFiles(currentDirPath, searchPattern);
- }
- catch (UnauthorizedAccessException)
- {
- continue;
- }
- catch (DirectoryNotFoundException)
- {
- continue;
- }
- foreach (string filePath in files)
- {
- yield return filePath;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д