Подсчет файлов без Directory.GetFiles () из-за ошибки слишком длинных путей - PullRequest
0 голосов
/ 15 февраля 2019

Речь идет о прогресс-баре, который работает помимо инструмента импорта файлов.Поскольку мне нужно знать, сколько файлов мы должны импортировать, мне нужно как-то их посчитать.Обычно я делаю это так:

return new DirectoryInfo(myBaseDirectory).GetFiles("*", SearchOption.AllDirectories).Length;

Это не работает для меня, потому что я должен обработать TooLongPathException.И при подсчете их компилятор пытается получить доступ к конкретному объекту, что приводит к исключению.В файле import-process это уже обработано.Я могу просто пропустить конкретный файл.

Поскольку мне нужно только считать файлы и не нужно что-то с ними делать, я ищу другое решение для подсчета некоторых файлов в подпапках.Поскольку я работаю с .net3.5, я не могу использовать метод Directory.EnumerateFiles.

1 Ответ

0 голосов
/ 15 февраля 2019

Библиотека Zeta Long Paths в основном является оболочкой для определенных функций win32, которые позволяют вам использовать пути длиной более 260 символов.Я бы порекомендовал использовать это или поискать в документации по win32 необходимые функции, а затем использовать p / invoke для создания собственного типа оболочки.

Обратите внимание, что в .NET 4.6.2 и более поздних версиях .NET поддерживаетбольшие пути, если вы когда-нибудь решите обновить свой проект до более новой версии .NET.

...