¿OS X impone una longitud máxima de nombre de archivo o una restricción de caracteres?

¿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.

¿Asumiendo el sistema de archivos HFS+?

Respuestas (2)

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.txten el stuffdirectorio" al sistema operativo. Hay formas de "escapar" caracteres como /en los nombres de archivo, pero no se recomienda para uso general.

Eso con el /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.
@PercivalUlysses Tiene razón, :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.
@bmike Sí :) ¿Sabes algo sobre este límite de 1024 caracteres para las rutas? En 10.6, este comportamiento está documentado en los archivos de encabezado del sistema y hay una PATH_MAXvariable. ¿Sigue siendo así en sistemas posteriores?
@PercivalUlysses Sí: en Mountain Lion pude crear una ruta de directorio de 1037 caracteres de profundidad y colocar un archivo y destacar, el buscador no está feliz de navegar, ubicar o abrir ese archivo en Edición de texto hasta que lo subo una carpeta ( donde la ruta tiene una longitud de 996) y todo funciona como se esperaba. También pathchk -pes útil para ejecutar este tipo de comprobaciones de portabilidad.
Probé lo siguiente: touch 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345funciona bien. Pero touch 12345678901234567890....6con un personaje más lanza: File name too long. FYI touchsimplemente crea un archivo vacío, o en realidad establece el archivo existente time_modifiedahora.
@AlexGrafe Logré crear 8 directorios anidados con ese nombre de ruta. PATH_MAX solo se encuentra cuando proporciona rutas absolutas a las llamadas del sistema, cuando proporciona directorios relativos, la longitud total de la ruta parece ser ilimitada. Gran Sur, APFS.

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
@StefanDragnev ¿Los miró cómo aparecen en Finder? Hay una sustitución automática (: es el separador de ruta, pero el lado de Unix cambia: y / en todas las rutas)
Notable. Finder muestra un archivo/carpeta llamado /. Xcode también muestra el nombre del archivo como /. VS Code y lsambos muestran el nombre como :.