Estoy diseñando una tabla de base de datos que contendrá los nombres de los archivos cargados. ¿Cuál es la longitud máxima de un nombre de archivo en NTFS como lo usa Windows XP o Vista?
windows-vista
windows-xp
ntfs
filenames
name-length
GateKiller
fuente
fuente
Respuestas:
Los componentes individuales de un nombre de archivo (es decir, cada subdirectorio a lo largo de la ruta y el nombre de archivo final) están limitados a 255 caracteres, y la longitud total de la ruta está limitada a aproximadamente 32,000 caracteres.
Sin embargo, en Windows, no puede exceder el
MAX_PATH
valor (259 caracteres para archivos, 248 para carpetas). Verhttp://msdn.microsoft.com/en-us/library/aa365247.aspx para más detalles.fuente
Son 257 caracteres. Para ser precisos: NTFS sí impone una longitud máxima de nombre de archivo de varios miles de caracteres (alrededor de 30'000 algo). Sin embargo, Windows impone una longitud máxima de 260 para Path + Filename. La carpeta drive + ocupa al menos 3 caracteres, por lo que terminas con 257.
fuente
Esto es lo que dice la "excepción no controlada" en el marco 4.5 al intentar guardar un archivo con un nombre de archivo largo:
fuente
199 en Windows XP NTFS, acabo de comprobar.
Esto no es teoría, sino simplemente probarlo en mi computadora portátil. Puede haber efectos atenuantes, pero físicamente no me deja agrandarlo.
¿Hay alguna otra configuración que limite esto, me pregunto? Pruébalo por ti mismo.
fuente
w
, lo eliminé y creé una carpeta con el mismo nombre en Windows 7 x64. Ahora la pregunta es cuál es el factor limitante aquí: la versión NTFS, el sistema operativo o el subsistema o la API Win32 en XP.Según MSDN , tiene 260 caracteres. Incluye
"<NUL>"
el carácter nulo de terminación invisible, por lo que la longitud real es 259.Pero lea el artículo, es un poco más complicado.
fuente
\\?\
prefijo requerido en el tiempo de ejecución a una longitud no especificada. La ruta debe permanecer por debajo de 32767 bytes después de esta expansión.La longitud en NTFS es 255. El
NameLength
campo en el$Filename
atributo NTFS es un byte sin desplazamiento; esto produce un rango de 0-255.El nombre del archivo puede estar en diferentes "espacios de nombres". Hasta ahora hay: POSIX, WIN32, DOS y (WIN32DOS, cuando un nombre de archivo puede ser de forma nativa un nombre de DOS). (Dado que la cadena tiene una longitud, podría contener \ 0 pero eso generaría problemas y no está en los espacios de nombres anteriores).
Por lo tanto, el nombre de un archivo o directorio puede tener hasta 255 caracteres. Al especificar la ruta completa en Windows, debe prefijar la ruta con \\? \ (O usar \\? \ UNC \ server \ share para rutas UNC) para marcar esta ruta como una de longitud extendida (~ 32k caracteres) . Si su ruta es más larga, tendrá que configurar su directorio de trabajo en el camino (ugh - efectos secundarios debido a la configuración de todo el proceso).
fuente
255 caracteres.
http://en.wikipedia.org/wiki/Filename
fuente
Estoy agregando esto a la respuesta aprobada anterior.
PARA SER CLARO, la razón por la que la gente cree que tiene 255-260 caracteres es porque eso es todo lo que Windows Explorer admite. Se producirá un error al hacer algo como una copia de archivo en nombres de archivo más largos que eso. Sin embargo, un programa puede leer y escribir nombres de archivo mucho más largos (que es así como llega a longitudes de las que Explorer se queja en primer lugar). La "solución recomendada" de Microsoft en situaciones como esta es abrir el archivo en el programa original que lo escribió y cambiarle el nombre.
fuente
Según la nueva documentación del SDK de Windows (8.0) parece que se proporciona un nuevo límite de ruta. Hay un nuevo conjunto de funciones de manejo de ruta y una definición de PATHCCH_MAX_CCH como la siguiente:
fuente
Esta parte de la documentación oficial dice claramente que son 255 caracteres Unicode para NTFS, exFAT y FAT32, y 127 caracteres Unicode o 254 caracteres ASCII para UDF.
Aparte de eso, la longitud máxima del nombre de ruta es siempre de 32.760 caracteres Unicode, con cada componente de ruta no más de 255 caracteres.
fuente
WCHAR
elementos. No, no son "caracteres Unicode" (verifique su terminología Unicode: puntos de código, caracteres, etc.).255 caracteres, aunque la ruta completa no debería ser más larga que eso también. Hay una buena mesa en Wikipedia sobre esto: http://en.wikipedia.org/wiki/Filename .
fuente
238! Lo comprobé en Win7 de 32 bits con el siguiente script de murciélago:
fuente
w
). ¿Y ahora qué?En realidad es 256, ver Comparación de funcionalidades del sistema de archivos, límites .
Para repetir una publicación en http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html
Si lees las publicaciones anteriores, verás que hay una quinta cosa de la que puedes estar seguro: ¡Encontrar al menos un usuario obstinado de la computadora!
fuente
No puedo crear un archivo con el nombre + período + extensión en WS 2012 Explorer de más de 224 caracteres. ¡No le dispares al mensajero!
En el CMD del mismo servidor no puedo crear un nombre de más de 235 caracteres:
El archivo con un nombre de 224 caracteres creado en el Explorador no se puede abrir en Notepad ++; en su lugar, solo aparece un nuevo archivo.
fuente
The system cannot find the path specified.
No es lo mismo queThe specified path, file name, or both are too long.
. Supongo que tenías un error tipográfico o algo así. Obtiene ese mensaje si intenta crear un archivo en una ruta que no existe o si desea moverse a una dirección que no existe.