Получение списка файлов - C#

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

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

Добрый день! Столкнулся с проблемой при получении списка файлов. Тестировал на флешке с обходом всех подпапок. Выдает ошибку Отказано в доступе к System Volume Information. В чем затык именно при обходе подпапок? Если делать поиск с параметром SearchOption.OnlyTopDirectories, то все в принципе работает. Собственно вот код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace ForTesting
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] files = Directory.GetFiles(@"G:", "*.txt",SearchOption.AllDirectories);
            foreach (string file in files)
            {
                Console.WriteLine(file);
            }
 
        }
    }
}

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.IO;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var Result = GetFiles(@"J:", "*.txt");
            foreach (string file in Result)
            {
                Console.WriteLine(file);
            }
            Console.ReadKey();
        }
 
        public static IEnumerable<string> GetFiles(string root, string searchPattern)
        {
            Stack<string> pending = new Stack<string>();
            pending.Push(root);
            while (pending.Count != 0)
            {
                var path = pending.Pop();
                string[] next = null;
                try
                {
                    next = Directory.GetFiles(path, searchPattern);
                }
                catch { }
                if (next != null && next.Length != 0)
                    foreach (var file in next) yield return file;
                try
                {
                    next = Directory.GetDirectories(path);
                    foreach (var subdir in next) pending.Push(subdir);
                }
                catch { }
            }
        }
    }
}

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


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

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

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