DirectoryInfo, FileInfo и очень длинный путь
Я пытаюсь работать с DirectoryInfo, FileInfo с очень длинным путем.
- Я пытаюсь использовать \\?\ C:\long path (я получил нелегальный символ с fileInfo и DirectoryInfo)
- Я пытаюсь использовать файл:// C: / длинный путь (я получил URI не поддерживается)
Могу ли я использовать ~ в пути или что-то еще.
Я прочитал этот пост, но я хотел бы использовать другой способ, который вызывает API. Есть ли другие решения?
Есть статья от майкрософт для использования \\? в тексте пути к файлу
Вопрос в том, как я могу работать с очень длинным путем, и DirectoryInfo, и FileInfo для пути, который длиннее 256 символов
5 ответов
Глядя на серию публикаций в блоге " Длинные пути".NET, похоже, что на данный момент переход к API Win32 через P/Invoke - единственное решение, кроме реструктуризации ваших каталогов, чтобы вы не достигли предела.
Библиотека снова доступна в этом месте.
Это библиотека.NET, написанная для.NET Framework 2.0 и может использоваться для доступа к очень длинным папкам и файлам из приложения.NET.
Поскольку.NET Framework не поддерживает длинные имена файлов:-(Мне пришлось написать библиотеку, которая вызывает API-интерфейс WIN32 и оборачивает эти функции, как System.IO
, Пока это не полная копия System.IO
у него есть большинство доступных объектов и функций.
Delimon.Win32.IO
заменяет основные файловые функции System.IO
с поддержкой длинных имен путей для символов до 32 767 символов MAX_PATH
проблема
Вы когда-нибудь сталкивались с этой проблемой?
System.IO.PathTooLongException
был необработанным
Сообщение:
Указанный путь, имя файла или оба слишком длинные. Полное имя файла должно быть не более 260 символов, а имя каталога должно быть не более 248 символов.
Библиотека Delimon.Win32.I O (V4.0) также доступна, она написана для.NET Framework 4.0 и может использоваться в системах x86 и x64.
В прошлом я решил эту проблему, используя библиотеку Delimon под названием Delimon.Win32.IO. Похоже, его сайт http://www.delimon.be/ в данный момент не работает. Но в прошлом я использовал его в проекте, и он работал как чемпион. Я могу попытаться разыскать его для вас позже этим вечером или просто попытаться найти действительную ссылку на него где-нибудь через Google. Приветствия. Вот еще одна ссылка для обсуждения этой проблемы.
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/2541a9b9-acd7-4338-89b1-dfc0408e41b5
Начиная с.NET 4.6.2, эта проблема может быть решена путем изменения групповой политики локального компьютера, что позволяет использовать длинные пути на Win 10+ и Server 2016+.
Проверено и подтверждено.
https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/