2009-12-07 7 views

Respuesta

20

La limitación de 260 caracteres no es una limitación del sistema de archivos, sino de la API de Win32. Win32 define MAX_PATH como 260, que es lo que usa la API para verificar la longitud de la ruta pasada a funciones como FileCreate, FileOpen, etc. (que son utilizadas por .NET en BCL).

Sin embargo, puede eludir las reglas de Win32 y crear rutas de hasta 32K caracteres. Básicamente, necesita utilizar la sintaxis "\\? \ C: \ MyReallyLongPath \ File.txt" que quizás no haya visto antes. La última vez que verifiqué, las clases File y FileInfo en .NET le impidieron usar este tipo de ruta, pero definitivamente puede hacerlo desde C/C++. Aquí hay un enlace para más información.

http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

+0

Cabe señalar que una API se introdujo con Windows 95 que hace rutas de soporte de más de 'caracteres MAX_PATH': la API de Shell. –

4

Citado de Wikipedia

Los nombres de archivo están limitados a 255 UTF-16 palabras de código. Ciertos nombres están reservados en el directorio de raíz de volumen y no se pueden usar para archivos . Estos son: $ MFT, $ MFTMirr, $ LogFile, $ Volume, $ AttrDef,. (punto), $ Bitmap, $ Boot, $ BadClus, $ Secure, $ Upcase y $ Extend; [3]. (punto) y $ Extend son ambos directorios; los otros son archivos. El kernel NT limita rutas completas a 32.767 UTF-16 código palabras.

http://en.wikipedia.org/wiki/NTFS

3

Doc. Sin duda, debería poder crear rutas de archivos más largas que 255 bytes, siempre que cada componente de ruta individual esté por debajo de eso. Sin embargo, debe utilizar las versiones Unicode (W) de las llamadas de acceso a archivos para obtener este comportamiento; si está utilizando las interfaces ANSI (A) basadas en bytes, como las utilizadas por stdio, se encontrará con las limitaciones de la antigua interfaz de ruta pre-Unicode.

Cuestiones relacionadas