Ограничение Max_Path в Boost.filesystem
Вопрос
Я хочу использовать BOOST.FILEDYSTEM Library для манипулирования путями, файлами и каталогами. Мой вопрос - это пути дольше, чем Max_Path поддерживается?
Я знаю, что в Win32api у нас есть обходной путь «? », Но он не поддерживается основными функциями, такими как PathAppend и PathCombine.
Поэтому я ищу любую полезную информацию о Max_Path и Boost.fs.
Спасибо
UPD: Я забочусь о всей работе, как Path Append, Path Combine и т. Д. (У меня есть те функции в Win32API, но они не работают с путями дольше, чем Max_Path), например, CreateFileW и DELETEFILEW, оба пути поддержки дольше, чем max_path. Может быть усиление.
Решение
Правда в том, что Windows поддерживает пути любой длины, и любой путь может быть преобразован в строку в Windows. Добавление \\?\
Требуется в таком случае, но это часть «Сделать строку из данного пути».
AFAIK, BOOST :: Файловая система делает это неправильно в Windows.
Я не знаю, планируется ли исправление. Видеть это о том, как это должно быть сделано.
Другие советы
Вы можете манипулировать любую длину строки пути файловой системы с Boost.filesysystem.
Max_Path - это ограничения файлов Windows API. То есть вы не можете пройти слишком длинную строку пути к API к Windows.
Например, удалить функцию BOOST.FILESSYSTEM с длительностью дольше, чем путь длины Max_Path. Вы хотите Boost.filesystem сделать что-то вроде изменения текущего каталога и используйте относительный путь к предотвращению ограничения Max_Path? Я так не думаю, что это возможно.
Отредактировано
Потому что Boost.filesystem реализован на строке C ++, вам не нужно беспокоиться о длине пути. BOOST.FILESYSTEM обеспечивает не только методы манипулирования строковыми путями, но и методы манипулирования файлами. Вы должны избегать методов файловой системы, если полученный путь слишком длинный.
Я не знаю, поддерживает ли BOOT.FILESYSTEM WIN32 путь Unicode Path, но вы можете преобразовать окончательный путь ANSI к пути Unicode перед вызовом файлов Win32.