2 / 2 / 1
Регистрация: 06.09.2015
Сообщений: 81
1

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

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

Author24 — интернет-сервис помощи студентам
Добрый день!
Столкнулся с проблемой при получении списка файлов. Тестировал на флешке с обходом всех подпапок.
Выдает ошибку Отказано в доступе к 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2016, 09:37
Ответы с готовыми решениями:

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

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

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

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

4
157 / 156 / 104
Регистрация: 01.10.2015
Сообщений: 310
14.06.2016, 09:44 2
Цитата Сообщение от degvelo Посмотреть сообщение
В чем затык именно при обходе подпапок?
Никакого "затыка" при обходе нет. Просто папка "System Volume Information" является системной папкой и к ней Вы не имеете доступа, чтобы получить список файлов внутри нее. Собственно, поэтому и возникает исключение. По-моему, все логично. Хотите обойти? Придется ставить try/catch и реализовывать механизм обхода после исключения.
0
2 / 2 / 1
Регистрация: 06.09.2015
Сообщений: 81
14.06.2016, 10:09  [ТС] 3
А что имеется в виду механизм обхода после исключения? Если на сложно можно кинуть ссылку на образец кода.
Спасибо!
0
157 / 156 / 104
Регистрация: 01.10.2015
Сообщений: 310
14.06.2016, 10:18 4
Лучший ответ Сообщение было отмечено 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  [ТС] 5
Спасибо!
0
14.06.2016, 10:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2016, 10:27
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru