С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
2 / 2 / 1
Регистрация: 06.09.2015
Сообщений: 81

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

14.06.2016, 09:37. Показов 2326. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Столкнулся с проблемой при получении списка файлов. Тестировал на флешке с обходом всех подпапок.
Выдает ошибку Отказано в доступе к System Volume Information.

В чем затык именно при обходе подпапок? Если делать поиск с параметром SearchOption.OnlyTopDirectories, то все в принципе работает.

Собственно вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);
            }
 
        }
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.06.2016, 09:37
Ответы с готовыми решениями:

Получение списка каталогов и файлов
Гуглю уже не первый день и никак не могу додумать как получить мне список всех файлов и подкаталогов в указанной папке. Пытался сам...

Получение списка файлов из каталога
Всем привет! Подскажите пожалуйста, как получить список файлов, но так, чтобы перед именем файла не было пути, а после - расширения? ...

Параллельное получение списка файлов в каталоге
Подскажите, если я выполню такую инструкцию: Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories).AsParallel() Будут ли...

4
 Аватар для BroDMax
157 / 156 / 104
Регистрация: 01.10.2015
Сообщений: 310
14.06.2016, 09:44
Цитата Сообщение от degvelo Посмотреть сообщение
В чем затык именно при обходе подпапок?
Никакого "затыка" при обходе нет. Просто папка "System Volume Information" является системной папкой и к ней Вы не имеете доступа, чтобы получить список файлов внутри нее. Собственно, поэтому и возникает исключение. По-моему, все логично. Хотите обойти? Придется ставить try/catch и реализовывать механизм обхода после исключения.
0
2 / 2 / 1
Регистрация: 06.09.2015
Сообщений: 81
14.06.2016, 10:09  [ТС]
А что имеется в виду механизм обхода после исключения? Если на сложно можно кинуть ссылку на образец кода.
Спасибо!
0
 Аватар для BroDMax
157 / 156 / 104
Регистрация: 01.10.2015
Сообщений: 310
14.06.2016, 10:18
Лучший ответ Сообщение было отмечено degvelo как решение

Решение

degvelo, на stackoverflow.com есть образец функции. Для Вашего случая, используем вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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 { }
            }
        }
    }
}
Код взят отсюда.
1
2 / 2 / 1
Регистрация: 06.09.2015
Сообщений: 81
14.06.2016, 10:27  [ТС]
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2016, 10:27
Помогаю со студенческими работами здесь

Получение списка файлов, подпапок, с WEB страницы
Всем привет! Ребят, нужна помощь. Допустим, у меня имеется сайт: blablalol.ru/myfiles В каталоге myfiles имеется несколько папок,...

Получение списка файлов и запись данных в файл по образцу
Доброго времени суток. Я пишу методом тыка, программированию не учился, но вот жизнь заставила. Ситуация следующая: необходимо получить...

Форматирование диска/Получение списка системных файлов
Нужно копировать все папки/файлы(в том числе и скрытые/системные) во временную директорию, форматировать флэш-накопитель и возвращать...

Получение списка задач из планировщика Windows на запуск файлов при старте системы, а так же при входе пользователя
Доброго времени суток. Microsoft Visual Studio Professional 2015 C# Версия 14.0.25431.01 Update 3 Microsoft .NET Framework Версия...

FTP: получение списка файлов из потока. Как вывести список файлов из директории?
доброго времени суток. пытаюсь написать свой FTP-клиент. отправил серверу команду LIST, и в ответ он выдал &quot;ок. успешно&quot; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru