Я хочу перечислить все файлы и каталоги, содержащиеся в каталоге и подкаталогах этого каталога. Если я выберу C: \ в качестве каталога, программа получит все имена всех файлов и папок на жестком диске, к которым у нее есть доступ.
Список может выглядеть так
fd \ 1.txt fd \ 2.txt fd \ a \ fd \ b \ fd \ a \ 1.txt fd \ a \ 2.txt fd \ a \ a \ fd \ a \ b \ fd \ b \ 1.txt fd \ b \ 2.txt fd \ b \ a fd \ b \ b fd \ a \ a \ 1.txt fd \ a \ a \ a \ fd \ a \ b \ 1.txt fd \ a \ b \ a fd \ b \ a \ 1.txt fd \ b \ a \ a \ fd \ b \ b \ 1.txt fd \ b \ b \ a
c#
directory
subdirectory
getdirectories
derp_in_mouth
источник
источник
Ответы:
где
*.*
шаблон для сопоставления файловЕсли Справочник также нужен, вы можете сделать это так:
источник
Lsit<>
класс? Что возвращает GetFiles? А как насчет имен каталогов, которые также были запрошены?GetFiles
Метод возвращает массив строк.Directory.GetFileSystemEntries
существует в .NET 4.0+ и возвращает как файлы, так и каталоги. Назовите это так:Обратите внимание, что он не справится с попытками перечислить содержимое подкаталогов, к которым у вас нет доступа (UnauthorizedAccessException), но этого может быть достаточно для ваших нужд.
источник
Используйте
GetDirectories
иGetFiles
методы , чтобы получить файлы и папки.Используйте также, чтобы получить папки и файлы во вложенных папках.
SearchOption
AllDirectories
источник
Path
предлагает более надежные методы.Path
для удаления фиксированной левой части пути, например, `C:` в приведенном примере.path.SubString(2)
наивно удалить букву диска и двоеточие? Что, если каталог является сетевым ресурсом? Я предлагаю этоPath
как надежный метод, потому что он может принести массу пользы в этой области. В этом случае вы можете писатьfilePath.Substring(Path.GetPathRoot(filePath).Length)
. Да, здесь используется подстрока, поскольку она наиболее краткая.источник
Боюсь,
GetFiles
метод возвращает список файлов, а не каталоги. Список в вопросе подсказывает мне, что результат должен включать и папки. Если вам нужен более индивидуальный список, вы можете попробовать позвонитьGetFiles
иGetDirectories
рекурсивно. Попробуй это:Совет: Вы можете использовать
FileInfo
иDirectoryInfo
классы , если вам нужно проверить любой атрибут конкретного.источник
Некоторая улучшенная версия с максимальным уровнем для перехода в каталог и возможностью исключения папок:
входной каталог:
вывод функции (содержимое папки 5 исключено из-за ограничения lvl, а содержимое папки 3 исключено, потому что она находится в массиве excludedFolders):
источник
Вы можете использовать FindFirstFile, который возвращает дескриптор, а затем рекурсивно вызывает функцию, которая вызывает FindNextFile. Это хороший подход, поскольку указанная структура будет заполнена различными данными, такими как AlternativeName, lastTmeCreated, modified, атрибуты и т. Д.
Но поскольку вы используете .net framework, вам придется войти в неуправляемую область.
источник
Если у вас нет доступа к подпапке внутри дерева каталогов, Directory.GetFiles останавливает и генерирует исключение, которое приводит к нулевому значению в принимающей строке [].
Вот этот ответ https://stackoverflow.com/a/38959208/6310707
Он управляет исключением внутри цикла и продолжает работу, пока не будет пройдена вся папка.
источник
логичный и упорядоченный способ:
источник
В следующем примере показан самый быстрый (не распараллеленный) способ перечисления файлов и подпапок в дереве каталогов, обрабатывающих исключения. Было бы быстрее использовать Directory.EnumerateDirectories с помощью SearchOption.AllDirectories для перечисления всех каталогов, но этот метод завершится ошибкой, если попадет в UnauthorizedAccessException или PathTooLongException.
Использует общий тип коллекции Stack, который является стеком "последний пришел - первым вышел" (LIFO) и не использует рекурсию. Из https://msdn.microsoft.com/en-us/library/bb513869.aspx , позволяет перечислить все подкаталоги и файлы и эффективно справиться с этими исключениями.
источник
Я использую следующий код с формой с двумя кнопками, одна для выхода, а другая для запуска. Диалог браузера папок и диалог сохранения файла. Код приведен ниже и работает в моей системе Windows10 (64):
источник
При этом вы можете просто запустить их и выбрать подпапку при запуске консоли.
и это патчар для экспорта XML
источник
источник
Немного просто и медленно, но работает !! если вы не указываете путь к файлу, в основном используйте «fixPath», это просто пример .... вы можете искать нужный тип файла, какой хотите, я сделал ошибку, когда выбрал имя списка, потому что «временный список файлов» - это список искомых файлов так что продолжайте .... и "errorList" говорит сам за себя
источник
Создать список строк
источник