¿Cuál es la longitud máxima de caracteres del nombre de archivo de los archivos en OS X?
De importancia secundaria es si algunos caracteres están permitidos o no, además de las restricciones de longitud general.
Según la fuente de todos los conocimientos , el tamaño máximo del nombre de archivo en el sistema de archivos HFS+ predeterminado es de 255 unidades de codificación UTF-16, básicamente 255 caracteres. Técnicamente, se puede usar cualquier carácter Unicode, pero esto puede estar prácticamente limitado por la aplicación que está usando; por ejemplo, el /
carácter se usa para delinear directorios en nombres de rutas, por lo que es posible que no se le permita nombrar un solo archivo stuff/things.txt
, ya que esto significa "el archivo things.txt
en el stuff
directorio" al sistema operativo. Hay formas de "escapar" caracteres como /
en los nombres de archivo, pero no se recomienda para uso general.
/
no es cierto (10.6 aquí). Lo que no puede usar es :
(antiguo separador HFS), al menos en el Finder. Lo curioso es que /
se representa como :
a nivel de caparazón. Otra limitación extraña es que la longitud de la ruta está limitada por 1024 bytes o caracteres UTF-8, no estoy seguro de cuál. Finder no aplica esto y puede provocar un comportamiento extraño.:
está prohibido en HFS y HFS +, pero la mayoría de las personas de UNIX están acostumbradas a la sustitución automática de / por: y viceversa y no se dan cuenta de los usos de almacenamiento interno de HFS: para separar directorios de nombres de archivos.PATH_MAX
variable. ¿Sigue siendo así en sistemas posteriores?pathchk -p
es útil para ejecutar este tipo de comprobaciones de portabilidad.touch 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
funciona bien. Pero touch 12345678901234567890....6
con un personaje más lanza: File name too long
. FYI touch
simplemente crea un archivo vacío, o en realidad establece el archivo existente time_modified
ahora.Sí, debe mantener los nombres de los archivos en 255 caracteres, pero las rutas pueden ser más largas, pero no tanto como lo permiten otros Unix.
El OS X de escritorio admite diez sistemas de archivos principales (HFS, HFS Plus, UFS, WebDAV, UDF, FAT, SMB/CIFS, AFP, NFS y FTP) con varias variantes de algunos de estos. Consulte la tabla 1 en el siguiente artículo de developer.apple.com para obtener más detalles:
El sistema de archivos predeterminado del sistema, HFS plus , admite nombres de archivo de 255 unidades de codificación UTF-16 y el único carácter reservado es :
el que se usa internamente para indicar un cambio de directorio en lugar del /
que normalmente se reserva para indicar un cambio de directorio en lugar de pertenecer al nombre de el archivo. (ok, creo que 0x00, el carácter nulo también está prohibido en HFS+)
Por convención, el software debe usar identificadores de archivos y es responsable de asignar suficiente espacio para contener una ruta de archivo arbitrariamente larga si no usa API estándar para navegar por la estructura del sistema de archivos para ubicar un nombre de archivo de 255 de longitud.
touch :
y mkdir :
trabajo sin embargo/
. Xcode también muestra el nombre del archivo como /
. VS Code y ls
ambos muestran el nombre como :
.
vcsjones