Вопрос

Я хочу использовать 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top