Pregunta

Quiero utilizar la biblioteca para manipular Boost.Filesystem caminos, archivos y directorios. Mi pregunta es son los caminos más largos que MAX_PATH apoyado?

Sé que en Win32API tenemos solución "\\? \" Pero no es apoyado por las funciones básicas como PathAppend y PathCombine.

Así que estoy en busca de cualquier información útil sobre MAX_PATH y Boost.FS.

Gracias

UPD: me importa para todas las operaciones, tales como añadir trayectoria, trayectoria combinar, etc (no tengo esas funciones en Win32API, pero no funciona con caminos más largos que MAX_PATH) Por ejemplo CreateFileW y DeleteFileW ambas rutas de soporte más largos que MAX_PATH. Que Boost.FS ser un reemplazo para las funciones de utilidad win32api tales como los encontrados en shlwapi y shell32 que a menudo no admite rutas largas

¿Fue útil?

Solución

La verdad es que Windows admite rutas de acceso de cualquier longitud y cualquier camino se puede convertir en cadena en las ventanas. Se requiere la adición de \\?\ en tal caso, pero esta es la parte de "hacer una cadena de una determinada ruta" operación.

Que yo sepa, Boost :: sistema de archivos hace mal en las ventanas.

No sé si se planea una solución. Ver este sobre cómo debe ser hecho.

Otros consejos

Se puede manipular cualquier longitud de sistema de archivos cadena de ruta con o sin Boost.Filesystem.

MAX_PATH son las restricciones de la API de archivos de Windows. Es decir, no se puede pasar cadena de ruta demasiado larga para las API de Windows.

Por ejemplo, la función de quitar de la Boost.Filesystem fallará con más de camino longitud MAX_PATH. ¿Quieres Boost.Filesystem a hacer algo como directorio actual cambio y utiliza una ruta relativa a la restricción Prevenir MAX_PATH? Me parece que no es posible.

EDITADO

Debido Boost.Filesystem implementado en cadena de C ++, usted no necesita preocuparse por la longitud del trayecto. Boost.Filesystem proporcionar no sólo los métodos de manipulación de cadenas de ruta, sino también a métodos de manipulación del sistema de archivos. Debe evitar los métodos del sistema de archivos si la trayectoria resultante es demasiado largo.

No sé si es o no el apoyo Boost.Filesystem ruta Win32 Unicode pero se puede convertir ANSI ruta final para Unicode ruta antes de llamar a las API de Win32 de archivos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top