OS X applique-t-il une longueur maximale du nom de fichier ou une restriction de caractères?

6

Quelle est la longueur maximale des caractères de fichier dans OS X?

Une importance secondaire est de savoir si certains caractères sont autorisés / non autorisés en plus des restrictions de longueur globale.

Chauncey Garrett
la source
En supposant que le système de fichiers HFS +?
vcsjones

Réponses:

11

D'après la police de connaissances , la taille maximale du nom de fichier dans le système de fichiers HFS + par défaut est de 255 unités de codage UTF-16, soit 255 caractères. Techniquement, n'importe quel caractère unicode peut être utilisé, mais cela peut être pratiquement limité par l'application que vous utilisez. Par exemple, le /caractère sert à délimiter les répertoires dans les noms de chemins, de sorte que vous ne serez peut-être pas autorisé à nommer un seul fichier stuff/things.txt. "le fichier things.txtdans le stuffrépertoire" du système d'exploitation. Il y a moyen de "fuir" des caractères comme /dans les noms de fichiers, mais pour une utilisation générale, c'est découragé.

MattDMo
la source
1
Cela avec le /n'est pas vrai (10.6 ici). Ce que vous ne pouvez pas utiliser, c’est :(ancien séparateur HFS), du moins dans le Finder. Ce qui /est drôle, c’est ce qui est représenté au :niveau de la coque. Une autre limite étrange est que la longueur du chemin est limitée à 1024 octets ou caractères UTF-8, vous ne savez pas exactement lequel. Ceci n'est pas imposé par le Finder et peut entraîner un comportement étrange.
Percival Ulysses
@PercivalUlysses Vous êtes correct :est interdit sur HFS et HFS + mais la plupart des utilisateurs UNIX sont habitués à la substitution automatique de / pour: et inversement et ne réalisent pas les utilisations du stockage interne de HFS: pour séparer les répertoires des noms de fichiers.
bmike
@bmike Yeah :) Savez-vous quelque chose à propos de cette limite de 1024 caractères pour les chemins? Sur 10.6, ce comportement est documenté dans les fichiers d’en-tête du système et il existe une PATH_MAXvariable. Toujours ainsi sur les systèmes ultérieurs?
Percival Ulysses
1
@PercivalUlysses Oui - sur Mountain Lion, j’ai pu créer un chemin de répertoire de 1037 caractères et placer un fichier sous un projecteur. Le chercheur n’est pas heureux de naviguer, de localiser ou d’ouvrir ce fichier dans Text Edit jusqu’à ce que je le déplace d’un dossier ( le chemin est 996 long) et tout fonctionne comme prévu. Est également pathchk -ppratique pour exécuter ce type de vérification de la portabilité.
bmike
1
J'ai testé les éléments suivants: touch 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345fonctionne bien. Mais touch 12345678901234567890....6avec un caractère plus jette: File name too long. FYI touchcrée simplement un fichier vide ou définit en fait le fichier existant time_modifiedà maintenant.
xanderiel
3

Oui, vous devriez garder les noms de fichier à 255 caractères, mais les chemins peuvent être plus longs, mais pas aussi longtemps que le permet un autre unix.

Le système d'exploitation Mac OS X prend en charge dix systèmes de fichiers principaux (HFS, HFS Plus, UFS, WebDAV, UDF, FAT, SMB / CIFS, AFP, NFS et FTP) avec plusieurs variantes. Voir le tableau 1 à l'article de developer.apple.com ci-dessous pour plus de détails:

Le système de fichiers par défaut du système, HFS plus, prend en charge les noms de fichiers de 255 unités de codage UTF-16 et le seul caractère réservé :est utilisé en interne pour indiquer un changement de répertoire, contrairement à /ce qui est normalement réservé pour signifier un changement de répertoire plutôt que d'appartenir au nom de. le fichier. (ok - je crois que 0x00, le caractère nul est également interdit dans HFS +)

Par convention, les logiciels doivent utiliser les descripteurs de fichiers et sont responsables de l'allocation de suffisamment d'espace pour contenir un chemin de fichier arbitrairement long s'ils n'utilisent pas l'API standard pour la navigation dans la structure du système de fichiers afin de localiser un nom de fichier de 255 caractères.

bmike
la source
touch : et mkdir :travailler si
Stefan Dragnev