Библиотека ввода-вывода C#, которая поддерживает длинные пути (для решения исключений PathTooLongException)
Мое программное обеспечение с открытым исходным кодом синхронизирует удаленную папку с локальным рабочим столом. Удаленная папка может быть на Alfresco, где длина пути не имеет ограничений (/root/very/very/very/long/name.txt
).
При разработке приложения я использовал System.IO.File.OpenWrite
а также System.IO.Stream.Write
, но кажется, что они не поддерживают пути более нескольких сотен символов, поэтому пользователи сообщают об ошибках, таких как PathTooLongException
при работе с длинными путями.
Необходимо полностью избегать путей UNC, поскольку они приводят к несовместимости с некоторыми приложениями.
Какую библиотеку / код следует использовать в этом случае?
Это должно быть с открытым исходным кодом C#.
5 ответов
AlphaFS позволяет вам использовать очень длинные пути (используя стиль "\?\") И имитирует пространство имен System.IO.
Вы, вероятно, сможете использовать эту библиотеку так же, как если бы вы использовали System.IO. Например, AlphaFS.Win32.Filesystem.File.Copy() вместо System.IO.File.Copy ().
( источник)
Вы можете попробовать реализацию Long Path для библиотек базовых классов. Но имейте в виду, что не все будет работать, если вы начнете путать со стандартными методами ввода / вывода.NET.
Вы можете попробовать разделить путь, используя относительные пути, как указано в этом ответе, используя:
Directory.SetCurrentDirectory()
Собственный доступ к файловой системе
Начиная с версии 185 (19 февраля 2013 г.), библиотека защищена Публичной лицензией Microsoft (MS-PL), как указано в заголовках файлов исходного кода.
Выглядит многообещающе, но автор не советует использовать его в корпоративной среде, поскольку код недостаточно надежен.
В этой библиотеке есть несколько юнит-тестов, но нет документации.
Msgstr " Временное решение.NET 2.0 для PathTooLongException " (статья + код).
Лицензировано на условиях Code Project Open License (CPOL), которая, очевидно, не является открытым исходным кодом.
Только 2 коммита не делают для очень активного проекта, хотя...