Какова максимальная длина символа имени файла в OS X?
Второстепенное значение имеет то, разрешены или запрещены некоторые символы в дополнение к каким-либо ограничениям общей длины.
Из шрифта всех знаний максимальный размер имени файла в файловой системе HFS+ по умолчанию составляет 255 единиц кодировки UTF-16, то есть в основном 255 символов. Технически можно использовать любой символ Юникода, но это может быть практически ограничено используемым вами приложением — например, символ /
используется для разграничения каталогов в путях, поэтому вам может быть запрещено давать имя одному файлу stuff/things.txt
, поскольку это означает «файл things.txt
в stuff
каталоге» операционной системе. Существуют способы «экранирования» символов, например, /
в именах файлов, но для общего использования это не рекомендуется.
/
не верно (здесь 10.6). То, что вы не можете использовать, это :
(старый разделитель HFS), по крайней мере, в Finder. Забавно то, что /
представлен как :
на уровне оболочки. Еще одно странное ограничение заключается в том, что длина пути ограничена 1024 байтами или символами UTF-8, не знаю какими. Это не применяется Finder и может привести к странному поведению.:
это запрещено в HFS и HFS +, но большинство пользователей UNIX привыкли к автоматической замене / на : и наоборот и не понимают, что внутреннее хранилище HFS использует : для отделения каталогов от имен файлов.PATH_MAX
переменная. Все еще так на более поздних системах?pathchk -p
удобен для запуска подобных проверок переносимости.touch 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
работает нормально. А вот touch 12345678901234567890....6
с еще одним персонажем выкидывает: File name too long
. FYI touch
просто создает пустой файл или фактически устанавливает существующий файл time_modified
в настоящее время.Да, вы должны сохранить имена файлов до 255 символов, но пути могут быть длиннее, но не так долго, как позволяют некоторые другие Unix.
Настольная OS X поддерживает десять основных файловых систем (HFS, HFS Plus, UFS, WebDAV, UDF, FAT, SMB/CIFS, AFP, NFS и FTP) с несколькими вариантами некоторых из них. Подробности см. в таблице 1 в статье на сайте developer.apple.com ниже:
Системная файловая система по умолчанию, HFS plus , поддерживает имена файлов из 255 единиц кодировки UTF-16 , и единственный зарезервированный символ — это :
тот, который используется внутри для обозначения изменения каталога, в отличие от того, /
который обычно зарезервирован для обозначения изменения каталога, а не для принадлежности к имени файла. файл. (хорошо - я думаю, что 0x00, нулевой символ также запрещен в HFS+)
По соглашению программное обеспечение должно использовать дескрипторы файлов и нести ответственность за выделение достаточного пространства для размещения произвольно длинного пути к файлу, если оно не использует стандартный API для навигации по структуре файловой системы для поиска имени файла длиной 255.
touch :
и mkdir :
работать, хотя/
. Xcode также показывает имя файла как /
. VS Code, и ls
оба показывают имя как :
.
вксджонс