¿Hay alguna longitud de los límites de la ruta del archivo en NTFS?
Pregunta
¿Por qué no puedo crear un camino profundo cuyos caracteres en ruta es más de 255 en sistema de archivos NTFS? Parece un límite de FAT32, pero también existen en NTFS? ¿Alguien puede proporcionar algunos documentos?
Muchas Gracias!
Solución
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 el API está utilizando para comprobar la longitud de la trayectoria pasado a funciones como FileCreate, FileOpen, etc. (que son utilizados por .NET en el BCL).
Sin embargo, puede pasar por alto las reglas de Win32 y crear caminos de hasta 32K caracteres Básicamente es necesario utilizar el "\\ \ C: \ MyReallyLongPath \ archivo.txt". Sintaxis que se puede no han visto antes. Que yo sepa, el Archivo y clases FileInfo en .NET que impidieron el uso de este tipo de camino, pero definitivamente se puede hacer desde C / C ++. Aquí hay un enlace para obtener más información.
http://msdn.microsoft.com/en -US / library / aa365247 (VS.85) .aspx
Otros consejos
Citado de Wikipedia
Los nombres de archivos se limitan a 255 UTF-16 palabras de código. ciertos nombres están reservados en la raíz del volumen directorio y no puede ser utilizado para archivos. Estos son: $ MFT, su espejo $, $ Archivo de registro, $ de volumen, $ AttrDef,. (punto), $ Mapa de bits, $ Boot, $ BadClus, $ Secure, $ Upcase y $ Extender; [3]. (Punto) y $ Extend son ambos directorios; el otros son archivos. Los límites del núcleo NT rutas completas a 32.767 códigos UTF-16 palabras.
Doc . Por supuesto que debe ser capaz de crear rutas de los archivos de más de 255 bytes, siempre que cada componente de la ruta individuo es menor que. Sin embargo, usted debe utilizar las versiones Unicode (W) de las llamadas de acceso a archivos para obtener este comportamiento; si usted está utilizando el estándar ANSI (A) interfaces basadas en byte, como los utilizados por stdio, se le pegan con las limitaciones de la interfaz antiguo camino pre-Unicode.