2015-06-11 2 views
1

Я пытаюсь выполнить итерацию в папку с использованием boost :: filesystem, но если путь слишком длинный (абсолютный путь> 95 символов), то сбой на итерации. Кто-нибудь знает проблему с этим вопросом? Любая идея решить его?Неудачная итерация файловой системы с длинным путем

while (itr != boost::filesystem::recursive_directory_iterator()) 
{ 
    ++itr; 
} 

Я использую boost 1.57 и VS2013.

+0

Можете ли вы привести пример пути, который терпит неудачу? – sehe

+5

См. [Boost-windows-path-maximum-length] (http://www.boost.org/doc/libs/1_58_0/libs/filesystem/doc/reference.html#long-path-warning) – JTejedor

+0

Я итерации на "TILES_MINI", и все это вложенные папки/файлы. Если я выполняю задание на D: \ Users \ jromeror \ Documents \ Proyectos \ motor_v4 \ motorV4 \ DATA, например, при переходе по «D: \ Users \ jromeror \ Documents \ Proyectos \ motor_v4 \ motorV4 \ DATA \ Tiles_Mini \ 2 \ 1 \ 0.png «это нормально, но если я переведу« Tiles_Mini »в« D: \ Users \ jromeror \ Documents \ Proyectos \ motor_v4 \ motorV4 \ DATA \ ProcessedData ", то итерационный сбой ..... – jromeror

ответ

0

Это проблема с окнами, а не проблема с повышением, и единственное решение состоит в том, чтобы сделать ваши пути короче или переключиться на Unicode для взаимодействия файловой системы, что вызывает различные проблемы, если ваша программа по своей сути использует 8-битные символы. Сожалею.

Хотя Windows утверждает, что поддерживает MAX_PATH-символы (обычно 260), по моему опыту вы часто сталкиваетесь с трудностями задолго до того, как достигнете этой длины пути. В качестве одного примера (а не вашей проблемы, но примера) Visual Studio, в частности, предполагает, что ему нужно будет добавить дополнительный мусор к вашим путям, чтобы значительно сократить фактический полезный путь.

Для получения дополнительной информации, see the link posted by @JTejedor

Смежные вопросы