Различия файловых систем - часть 5
Каждый файл в файловой системе HFS также имеет два специальных тега:
creator (создатель) и type (тип), позволяющие операционной
системе идентифицировать, каким приложением был создан файл и какого он типа. Эти теги играют ту же роль, что и расширения, используемые в файловых системах FAT (например .doc или .ехе). Позже в этой главе мы увидим, как применять теги тип/создатель в собственных целях.
Сводка различий файловых систем
Ниже представлены те различия, о которых мы только что говорили, и некоторые другие интересные факты (табл. 2.1).
Таблица 2.1. Сравнение файловых систем
OS и файловая система |
Разде литель пути |
Чувстви тельность к регистру |
Длина имени файла |
Формат абсолют ного пути |
Формат относи тельного пути |
Уникальные возмож ности |
Unix (файловая система - Berkeley Fast File System и другие) |
/ |
Да |
В зависимости от операционной системы |
/dir/file |
dir/file |
Дополнения в зависимости от операционной системы |
MacOS (HFS) |
: |
Да |
31 символ (или 255
при использовании HFS+) |
volume: dir:file |
:dir:file |
Потоки данных/ ресурсов, атрибуты создатель/ тип |
WinNT/2000 (NTFS) |
\ |
Нет |
255 символов |
Drive:\ dir\file |
dir\file |
ACL, атрибуты, Unicode в именах файлов |
DOS (BASIC FAT) |
\ |
Нет |
8.3 |
Drive:\ dir\file |
dir\file |
Атрибуты |
Учет различий файловых систем в Perl
Perl может помочь создавать программы, в которых учитывается большинство особенностей файловых систем. В его состав входит модуль File::Spec, позволяющий нивелировать некоторые различия между файловыми системами. Например, если мы передаем компоненты пути методу catfile таким образом:
use File: :Spec
Path = File: : Spec -> cat r iie( "how1 . "iocs" ' г eSi;i:C doc")
то в Windows NT/2000 переменная $path будет иметь значение home\cindy\docs\resume. doc, тогда как в Unix она будет иметь значение cindy/docs/resume.doc и т. д. В модуле File: :Spec также есть методы, например curdir и updir, возвращающие обозначения для текущего и родительского каталогов (например « » и « »). Методы этого модуля предоставляют абстрактный способ построения и манипулирования именами путей. Если вы предпочитаете не использовать объектно-ориентированный синтаксис, то модуль File: :Spec: : Functions предоставляет более короткий путь к методам из File: Spec.