- 3. Файловая система
- Имя файла файловой системе windows может
- Имя файла — Filename
- Содержание
- История
- Перенос Unicode
- Ссылки: абсолютные и относительные
- Количество имен на файл
- Ограничения длины
- Расширения имен файлов
- Совместимость кодирования
- Взаимодействие индикации кодирования
- Совместимость с Unicode
- Перспективы
- Уникальность
- Сохранение регистра букв
- Зарезервированные символы и слова
- В Windows
- Сравнение ограничений имени файла
3. Файловая система
Все программы и данные хранятся в долговременной (внешней) памяти компьютера в виде файлов.
Файл — это определенное количество информации (программа или данные), имеющее имя и хранящееся в долговременной (внешней) памяти.
Имя файла состоит из двух частей, разделенных точкой: собственно имя файла и расширение, определяющее его тип (программа, данные и т. д.). Собственно имя файлу дает пользователь, а тип файла обычно задается программой автоматически при его создании.
В различных операционных системах существуют различные форматы имен файлов. В операционной системе MS-DOS собственно имя файла должно содержать не более восьми букв латинского алфавита и цифр, а расширение состоит из трех латинских букв, например: proba.txt
В операционной системе Windows в имя файла:
Единицы измерения информации.doc
1. Разрешается использовать до 255 символов.
2. Разрешается использовать символы национальных алфавитов, в частности русского.
3. Разрешается использовать пробелы и другие ранее запрещенные символы, за исключением следующих девяти: /\:*?»<>|.
4. В имени файла можно использовать несколько точек. Расширением имени считаются все символы, стоящие за последней точкой.
Роль расширения имени файла чисто информационная, а не командная. Если файлу с рисунком присвоить расширение имени ТХТ, то содержимое файла от этого не превратится в текст. Его можно просмотреть в программе, предназначенной для работы с текстами, но ничего вразумительного такой просмотр не даст.
Файловая система. На каждом носителе информации (гибком, жестком или лазерном диске) может храниться большое количество файлов. Порядок хранения файлов на диске определяется установленной файловой системой.
Файловая система — это система хранения файлов и организации каталогов.
Для дисков с небольшим количеством файлов (до нескольких десятков) удобно применять одноуровневую файловую систему, когда каталог (оглавление диска) представляет собой линейную последовательность имен файлов. Для отыскания файла на диске достаточно указать лишь имя файла. Если на диске хранятся сотни и тысячи файлов, то для удобства поиска файлы организуются в многоуровневую иерархическую файловую систему, которая имеет «древовидную» структуру (имеет вид перевернутого дерева).Начальный, корневой, каталог содержит вложенные каталоги 1-го уровня, в свою очередь, в каждом из них бывают вложенные каталоги 2-го уровня и т. д. Необходимо отметить, что в каталогах всех уровней могут храниться и файлы.
Для облегчения понимания этого вопроса воспользуемся аналогией с традиционным «бумажным» способом хранения информации. В такой аналогии файл представляется как некоторый озаглавленный документ (текст, рисунок и пр.) на бумажных листах. Следующий по величине элемент файловой структуры называется каталогом. Продолжая «бумажную» аналогию, каталог будем представлять как папку, в которую можно вложить множество документов, т.е. файлов. Каталог также получает собственное имя (представьте, что оно написано на обложке папки).
Каталог сам может входить в состав другого, внешнего по отношению к нему каталога. Это аналогично тому, как папка вкладывается в другую папку большего размера. Таким образом, каждый каталог может содержать внутри себя множество файлов и вложенных каталогов (их называют подкаталогами). Каталог самого верхнего уровня, который не вложен ни в какие другие, называется корневым каталогом.
А теперь полную картину файловой структуры представьте себе так: вся внешняя память компьютера — это шкаф с множеством выдвижных ящиков. Каждый ящик — аналог диска; в ящике — большая папка (корневой каталог); в этой папке множество папок и документов (подкаталогов и файлов) и т.д. Самые глубоко вложенные папки хранят в себе только документы (файлы) или могут быть пустыми.
Путь к файлу. Для того чтобы найти файл в иерархической файловой структуре необходимо указать путь к файлу. В путь к файлу входят записываемые через разделитель «\» логическое имя диска и последовательность имен вложенных друг в друга каталогов, в последнем из которых находится данный нужный файл.
Например, путь к файлам на рисунке можно записать так:
C:\Рефераты\
C:\Рефераты\Физика\
C:\Рефераты\Информатика\
C:\Рисунки\
Полное имя файла.
Путь к файлу вместе с именем файла называют полным именем файла.
Пример полного имени файлов:
C:\Рефераты\Физика\Оптические явления.doc
C:\Рефераты\Информатика\Интернет.doc
C:\Рефераты\Информатика\Компьютерные вирусы.doc
C:\Рисунки\Закат.jpg
C:\Рисунки\ Зима.jpg
В операционной системе Windows вместо каталогов используется понятие «папка». Папка – это объект Windows, предназначенное для объединения файлов и других папок в группы. Понятие папки шире, чем понятие «каталог».
В Windows на вершине иерархии папок находится папка Рабочий стол. (Следующий уровень представлен папками Мой компьютер, Корзина и Сетевое окружение (если компьютер подключен к локальной сети).
Графический интерфейс Windows позволяет производить операции над файлами с помощью мыши с использованием метода Drag&Drop (тащи и бросай). Существуют также специализированные приложения для работы с файлами, так называемые файловые менеджеры.
NTFS (от англ. New Technology File System — «файловая система новой технологии») — стандартная файловая система для семейства операционных систем Microsoft Windows
NTFS заменила использовавшуюся в MS-DOS и Microsoft Windows файловую систему FAT. NTFS поддерживает систему метаданных и использует специализированные структуры данных для хранения информации о файлах для улучшения производительности, надёжности и эффективности использования дискового пространства
FAT (англ. File Allocation Table — «таблица размещения файлов») — классическая архитектура файловой системы, которая из-за своей простоты всё ещё широко используется для флеш-накопителей. Используется в дискетах, и некоторых других носителях информации. Ранее использовалась и на жестких дисках.
Дефрагмента́ция — процесс обновления и оптимизации логической структуры раздела диска с целью обеспечения хранения файлов в непрерывной последовательности кластеров. После дефрагм 4 ентации ускоряется чтение и запись файлов, а, следовательно, и работа программ, ввиду того, что последовательные операции чтения и записи выполняются быстрее случайных обращений
Се́ктор диска — минимальная адресуемая единица хранения информации на дисковых запоминающих устройствах
Имя файла файловой системе windows может
Все файловые системы, поддерживаемые Windows, используют концепцию файлов и каталогов для доступа к данным, хранящимся на диске или устройстве. Разработчики Windows, работающие с API-интерфейсами Windows для ввода-вывода файлов и устройств, должны понимать различные правила, соглашения и ограничения имен файлов и каталогов.
Доступ к данным можно получить с дисков, устройств и общих сетевых ресурсов с помощью интерфейсов API файлового ввода-вывода. Файлы и каталоги, наряду с пространствами имен, являются частью концепции пути, который представляет собой строковое представление того, где получить данные, независимо от того, на диске они, или устройстве, или сетевом ресурсе.
Имена файлов и каталогов
Все файловые системы придерживаются одних и тех же общих соглашений об именовании для отдельного файла: имя базового файла и необязательное расширение, разделяемые точкой. Однако, у каждой файловой системы, ()NTFS, и cdfs, NTFS или exFAT, FAT и FAT32, могут быть особые и иные правила о формировании отдельных компонентов пути к каталогу или файлу.
Обратите внимание, что каталог — это просто файл со специальным атрибутом, обозначающим его как каталог, но он также должен следовать всем тем же правилам именования, что и обычный файл. Поскольку термин «каталог» просто относится к определенному типу файлов в отношении файловой системы, мы будем использовать общий термин «файл» для охвата понятий каталогов и файлов данных как таковых. Из-за этого, если не указано иное, любые правила именования или использования или примеры для файла также должны применяться к каталогу. Термин путь относится к одному или нескольким каталогам, обратным косым чертам и, возможно, имени тома.
Ограничения количества символов также могут различаться и варьироваться в зависимости от используемой файловой системы и формата префикса имени пути. Это еще больше осложняется поддержкой механизмов обратной совместимости. Например, старая файловая система MS-DOS FAT поддерживает не более 8 символов для имени базового файла и 3 символа для расширения, в общей сложности 12 символов, включая разделитель точку. Файловые системы Windows FAT и NTFS не ограничиваются этим, поскольку они имеют поддержку длинных имен файлов, но они по-прежнему поддерживают предыдущие версии имен файлов.
Правила именования файлов
Следующие основные правила позволяют приложениям создавать и обрабатывать допустимые имена файлов и каталогов независимо от файловой системы:
- Используйте точку, чтобы отделить имя базового файла от расширения в имени каталога или файла.
- Используйте обратную косую черту (\) для разделения компонентов пути. Обратная косая черта отделяет имя файла от пути к нему, и одно имя каталога от другого имени каталога в пути. Нельзя использовать обратную косую черту в имени файла или каталога, потому что это зарезервированный символ, который разделяет имена на составляющие.
- Не думайте о чувствительности к регистру. Например, можно считать имена OSCAR, Oscar и oscar одинаковыми, хотя некоторые файловые системы (например, файловая система, совместимая с POSIX) могут рассматривать их как разные. Обратите внимание, что NTFS поддерживает семантику POSIX для учета регистра, но это не поведение по умолчанию.
- Обозначения томов (буквы дисков) не учитывают регистр символов. Например,» D:\ «и» d:\ » – это одно и то же.
- Используйте любой символ на текущей кодовой странице для имени, включая символы Юникода и символы в расширенном наборе символов (128-255), за исключением следующих:
- Следующие зарезервированные символы:
- (больше)
- : (двоеточие)
- » (двойная кавычка)
- / (косая черта)
- \ (обратная косая черта)
- | (вертикальный стержень или символ трубы)
- ? (вопросительный знак)
- * (звездочка)
- Целое нулевое значение, иногда называемое символом ASCII NUL.
- Символы, целочисленные представления которых находятся в диапазоне от 1 до 31, за исключением альтернативных потоков данных, где эти символы разрешены.
- Любой другой символ, который целевая файловая система не разрешает использовать.
- Следующие зарезервированные символы:
- Используйте точку как компонент каталога в пути для представления текущего каталога, например».\temt.txt.».
- Используйте две последовательных точки (..) как компонент каталога в пути для представления родительского каталога текущего каталога, например»..\temp.txt.»
- Не используйте следующие зарезервированные имена для имени файла: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, и LPT. Также избегайте этих имен, за которыми следует расширение; например, NUL.txt не рекомендуется.
- Не завершайте имя файла или каталога пробелом или точкой. Хотя файловая система может поддерживать такие названия, оболочка и пользовательский интерфейс Windows не будут работать с этим. Однако допустимо указывать точку в качестве первого символа имени. Например, «.temp».
Короткие и длинные имена
Длинным именем файла считается любое имя файла, которое превышает соглашение об именовании стиля MS-DOS (также называемое схема 8.3). При создании длинного имени файла Windows может также создать короткую форму имени 8.3, называемую псевдонимом 8.3 или коротким именем, и сохранить ее на диске. Это 8.3 псевдонимы могут быть отключены по соображениям производительности либо по всей системе, либо для указанного тома, в зависимости от конкретной файловой системы.
Во многих файловых системах имя файла будет содержать тильду (
) в каждом компоненте имени, которое слишком длинное, чтобы соответствовать правилам именования 8.3.
Не все файловые системы могут следовать соглашение о подстановке тильды, и системы могут быть настроены на отключение 8.3 генерации псевдонимов, даже если они обычно поддерживают его. Поэтому не следует делать предположение, что псевдоним 8.3 уже существует на диске.
По запросу 8.3 имена файлов, длинные имена файла или полный путь к файлу из системы, рассмотрите следующие варианты:
- Чтобы получить 8.3 форму длинного имени файла, используйте функцию GetShortPathName.
- Чтобы получить версию короткого имени длинного файла, используйте функцию GetLongPathName.
- Чтобы получить полный путь к файлу, используйте функцию GetFullPathName.
В новых файловых системах, таких как NTFS, exFAT, UDFS и FAT32, Windows сохраняет длинные имена файлов на диске в Юникоде, что означает, что исходное длинное имя файла всегда сохраняется. Это верно, даже если длинное имя файла содержит расширенные символы, независимо от кодовой страницы, которая активна во время операции чтения или записи диска.
Файлы, использующие длинные имена файлов, могут быть скопированы между разделами файловой системы NTFS и разделами файловой системы Windows FAT без потери информации об имени файла. Это может быть неверно для старых MS-DOS FAT и некоторых типов cdfs (CD-ROM) файловых систем, в зависимости от фактического имени файла. В данном случае, если это возможно, подставляется короткое имя файла.
Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
статьи IT, Windows, файлы, каталоги, правила
Имя файла — Filename
A имя файла или имя файла — имя, используемое для однозначной идентификации компьютерного файла , хранящегося в файловая система . Различные файловые системы накладывают разные ограничения на длину файлов и допустимые символы в именах файлов.
Имя файла может включать один или несколько из следующих компонентов:
- хост (или сервер ) — сетевое устройство, содержащее файл
- устройство (или диск ) — аппаратное устройство или диск
- каталог (или путь ) — дерево каталогов (например, / usr / bin, \ TEMP , [USR.LIB.SRC] и т. Д.)
- файл — базовое имя файла
- типа (формат или extension) — указывает тип содержимого файла (например, .txt , .exe , .COM и т. д.)
- версия — номер версии или поколения файла
Компоненты, необходимые для идентификации файла, различаются в разных операционных системах, как и синтаксис и формат допустимого имени файла.
Обсуждение имен файлов осложняется отсутствием стандартизации термина. Иногда «имя файла» используется для обозначения полного имени, например, имени Windows c: \ directory \ myfile.txt. Иногда он будет использоваться для ссылки на компоненты, поэтому имя файла в этом случае будет myfile.txt. Иногда это ссылка, исключающая расширение, поэтому имя файла будет просто myfile.
Содержание
История
Примерно в это же время появилась точка (точка или точка) в качестве разделителя расширений имени файла, и ограничение до трех буквенных расширений могло происходить из-за ограничений кодировки символов 16-бит RAD50 .
Традиционно большинство операционных систем поддерживали имена файлов только с верхним регистром буквенно-цифровые символы , но с течением времени количество разрешенных символов увеличивалось. Это приводило к проблемам совместимости при перемещении файлов между разными файловыми системами.
В 1985 году RFC 959 официально определил путь как строку символов, которая должна быть введена в файловую систему пользователем. для идентификации файла.
Перенос Unicode
Одной из проблем был переход на Unicode. Для этой цели несколько компаний-разработчиков программного обеспечения предоставили программное обеспечение для переноса имен файлов в новую кодировку Unicode.
- Microsoft предоставила прозрачную для пользователя миграцию в рамках технологии vfat
- Apple предоставила «Утилиту восстановления кодировки имен файлов v1.0».
- Сообщество Linux предоставило «convmv ”.
Mac OS X 10.3 ознаменовала принятие Apple декомпозиции символов Unicode 3.2, заменившей использовавшуюся ранее декомпозицию Unicode 2.1. Это изменение вызвало проблемы у разработчиков, пишущих программное обеспечение для Mac OS X.
Ссылки: абсолютные и относительные
Абсолютные ссылки включают все уровни каталогов. В некоторых системах ссылка на имя файла, которая не включает полный путь к каталогу, по умолчанию указывает на текущий рабочий каталог . Это относительная ссылка. Одним из преимуществ использования относительной ссылки в файлах конфигурации программы или сценариях является то, что разные экземпляры сценария или программы могут использовать разные файлы.
Таким образом абсолютный или относительный путь состоит из последовательности имён файлов.
Количество имен на файл
Unix-подобные файловые системы позволяют файлу иметь более одного имени; в традиционных файловых системах в стиле Unix это имена жестких ссылок на индексный дескриптор файла или его эквивалент. Windows поддерживает жесткие ссылки в файловых системах NTFS и предоставляет команду fsutil в Windows XP и mklink в более поздних версиях для их создания. Жесткие ссылки отличаются от ярлыков Windows , классических Mac OS / macOS псевдонимов или символических ссылок . Введение LFN с VFAT позволило использовать псевдонимы файлов. Например, longfi
1. . с максимум восемью плюс тремя символами был псевдонимом имени файла «длинное имя файла. . » как способ соответствия 8.3 ограничения для старых программ.
Это свойство использовалось алгоритмом команды перемещения, который сначала создает второе имя файла, а затем удаляет только первое имя файла.
Другие файловые системы, по замыслу, предоставляют только одно имя файла для каждого файла, что гарантирует, что изменение файла с одним именем файла не изменит файл с другим именем.
Ограничения длины
Некоторые файловые системы ограничивают длину имен файлов. В некоторых случаях эта длина применяется ко всему имени файла, например, 44 символа в IBM S / 370. В других случаях ограничения длины могут применяться к определенным частям имени файла, таким как имя файла в каталоге или имя каталога. Например, 9 (например, 8-битная FAT в Standalone Disk BASIC ), 11 (например, FAT12 , FAT16 , FAT32 в DOS), 14 (например, ранняя версия Unix), 21 (Human68K ), 31, 30 (например, Apple DOS 3.2 и 3.3), 15 (например, Apple ProDOS ), 44 (например, IBM S / 370) или 255 (например, ранняя версия Berkeley Unix) символа или байта. Ограничения длины часто возникают в результате выделения фиксированного пространства в файловой системе для хранения компонентов имен, поэтому увеличение ограничений часто требует несовместимого изменения, а также резервирования большего пространства.
Особая проблема файловых систем, которые хранят информацию во вложенных каталогах, заключается в том, что можно создать файл с полным путем, превышающим ограничения реализации, поскольку проверка длины может применяться только к отдельным частям имени, а не к все имя. Многие приложения Windows ограничены значением MAX_PATH , равным 260, но имена файлов Windows могут легко превысить этот предел [1] .
Расширения имен файлов
Многие файловые системы, включая FAT , NTFS и VMS разрешают расширение имени файла , которое состоит из одного или нескольких символов, следующих за последней точкой в имени файла, разделение имени файла на две части: базовое имя или основу и расширение или суффикс, используемый некоторыми приложениями для обозначения типа файла . Несколько выходных файлов, созданных приложением, используют одно и то же базовое имя и разные расширения. Например, компилятор может использовать расширение FOR для исходного входного файла (для кода Fortran), OBJ для вывода объекта и LST для листинга. Хотя есть некоторые общие расширения, они произвольны, и другое приложение может использовать REL и RPT . В файловых системах, которые не разделяют расширения, файлы часто имеют более длинные расширения, такие как html .
Совместимость кодирования
Не существует общего стандарта кодирования для имен файлов.
Поскольку имена файлов должны обмениваться между программными средами (например, передача файлов по сети, хранилище файловой системы, программное обеспечение для резервного копирования и синхронизации файлов, управление конфигурацией, сжатие и архивирование данных и т. Д.), Очень важно не терять информацию об имени файла между приложениями. Это привело к широкому внедрению Unicode в качестве стандарта для кодирования имен файлов, хотя устаревшее программное обеспечение могло не поддерживать Unicode.
Взаимодействие индикации кодирования
Традиционно, имена файлов допускали использование любых символов в именах файлов, если они были безопасными для файловой системы. Хотя это позволяло использовать любую кодировку и, таким образом, позволяло представлять любой локальный текст в любой локальной системе, это вызывало множество проблем совместимости.
Имя файла может быть сохранено с использованием разных байтовых строк в разных системах внутри одной страны, например, если в одной из них используется японская кодировка Shift JIS и японская кодировка EUC . Преобразование было невозможно, так как большинство систем не отображали описание кодировки, используемой для имени файла, как часть расширенной информации о файле. Это заставляло дорогостоящее угадывать кодировку имени файла при каждом доступе к файлу.
Решением было принять Unicode в качестве кодировки для имен файлов.
Однако в классической Mac OS кодировка имени файла хранилась с атрибутами имени файла.
Совместимость с Unicode
Стандарт Unicode решает проблему определения кодировки.
Тем не менее, остаются некоторые ограниченные проблемы совместимости, такие как нормализация (эквивалентность) или используемая версия Unicode. Например, UDF ограничен Unicode 2.0; В файловой системе macOS HFS + применяется нормализация NFD Unicode и, возможно, учитывается регистр (по умолчанию регистр не учитывается). Максимальная длина имени файла нестандартна и может зависеть от размера единицы кода. Хотя это серьезная проблема, в большинстве случаев она ограничена.
В Linux это означает, что имени файла недостаточно для открытия файла: кроме того, точное байтовое представление имени файла на устройстве хранения необходим. Это может быть решено на уровне приложения с помощью некоторых сложных вызовов нормализации.
Проблема эквивалентности Unicode известна как «конфликт нормализованных имен». Решением является ненормализующая осведомленность о композиции Unicode, используемая в технических сообществах Subversion и Apache. Это решение не нормализует пути в репозитории. Пути нормализованы только для сравнения. Тем не менее, некоторые сообщества запатентовали эту стратегию, запрещая ее использование другими сообществами.
Перспективы
Чтобы ограничить проблемы взаимодействия, некоторые идеи, описанные Sun, заключаются в следующем:
- использовать одну кодировку Unicode ( например, UTF-8)
- выполнять прозрачное преобразование кода для имен файлов
- не хранить нормализованные имена файлов
- проверять каноническую эквивалентность между именами файлов, чтобы избежать двух канонически эквивалентных имен файлов в одном и том же каталог.
Эти соображения создают ограничение, не позволяющее переключиться на будущую кодировку, отличную от UTF-8.
Уникальность
В пределах одного каталога имена файлов должны быть уникальными. Поскольку синтаксис имени файла также применяется к каталогам, невозможно создать файлы и записи каталога с одинаковыми именами в одном каталоге. Несколько файлов в разных каталогах могут иметь одно и то же имя.
Подход к уникальности может различаться как в зависимости от регистра, так и в форме нормализации Unicode , например NFC, NFD. Это означает, что могут быть созданы два отдельных файла с одним и тем же текстовым именем файла и разной байтовой реализацией имени файла, например L «\ x00C0.txt» (UTF-16, NFC) (латинская заглавная A с могилой) и L «\ x0041 \ x0300.txt «(UTF-16, NFD) (латинская заглавная A, объединение могил).
Сохранение регистра букв
Некоторые файловые системы, такие как FAT , хранят имена файлов в верхнем регистре, независимо от того, какой регистр букв использовался для их создания. Например, файл, созданный с именем «MyName.Txt» или «myname.txt», будет сохранен с именем «MYNAME.TXT». Для обозначения одного и того же файла можно использовать любые вариации верхнего и нижнего регистра. Такие файловые системы называются без учета регистра и не с сохранением регистра . Некоторые файловые системы вообще запрещают использование строчных букв в именах файлов.
Некоторые файловые системы хранят имена файлов в том виде, в котором они были изначально созданы; они называются с сохранением регистра или с сохранением регистра . Такая файловая система может быть с учетом регистра или без учета регистра . Если учитывается регистр, то «MyName.Txt» и «myname.txt» могут относиться к двум разным файлам в одном каталоге, и при ссылке на каждый файл необходимо указывать тот же регистр, которым он назван. С другой стороны, в файловой системе без учета регистра и с сохранением регистра только одно из «MyName.Txt», «myname.txt» и «Myname.TXT» может быть именем файла в заданном каталоге в заданное время, и на файл с одним из этих имен можно ссылаться, используя любую заглавную букву имени.
С самого начала Unix и производные от нее системы сохраняли регистр. Однако не все Unix-подобные файловые системы чувствительны к регистру; по умолчанию HFS + в macOS не чувствителен к регистру, а серверы SMB обычно обеспечивают нечувствительность к регистру (даже если базовая файловая система чувствительна к регистру, например, Samba в большинстве Unix-подобных систем), а клиентские файловые системы SMB обеспечивают нечувствительность к регистру. Файловая система чувствительность к регистру представляет собой серьезную проблему для программного обеспечения, такого как Samba и Wine , которое должно эффективно взаимодействовать с обеими системами, которые обрабатывают файлы в верхнем и нижнем регистре как разные, и с системами, которые обрабатывают их как то же самое.
Зарезервированные символы и слова
Файловые системы не всегда предоставляют один и тот же набор символов для создания имени файла. До того, как Unicode стал стандартом де-факто, файловые системы в основном использовали набор символов, зависящий от локали. Напротив, некоторые новые системы допускают, чтобы имя файла состояло практически из любого символа из репертуара Unicode и даже некоторых последовательностей байтов, отличных от Unicode. Ограничения могут быть наложены файловой системой, операционной системой, приложением или требованиями к взаимодействию с другими системами.
Многие утилиты файловой системы запрещают управляющие символы появляться в именах файлов. В Unix-подобных файловых системах запрещены нулевой символ и разделитель путей / .
В Windows
Утилиты файловой системы и соглашения об именах в Windows запрещают использование определенных символов в именах файлов:
Символ | Имя | Причина запрета |
---|---|---|
/ | косая черта | Используется в качестве разделителя компонентов имени пути в Unix-подобных системах, Windows и Amiga. (Пока для параметра SwitChar установлено значение ‘/’, оболочка DOS COMMAND.COM будет использовать его как символ переключения, но сами DOS и Windows всегда принимают его как разделитель на уровне API.) Большой знак (кодовая точка Unicode U + 29F8) разрешен в именах файлов Windows. |
\ | обратная косая черта | Используется в качестве разделителя компонентов имени пути по умолчанию в DOS, OS / 2 и Windows (даже если для SwitChar установлено значение ‘-‘; разрешено в именах файлов Unix, см. Примечание 1 ). Большой обратный знак permitted (U + 29F9) разрешен в именах файлов Windows. |
? | вопросительный знак | Используется как подстановочный знак в Unix, Windows и AmigaOS ; отмечает одиночный символ. Допускается в именах файлов Unix, см. Примечание 1 . заглушка голосовой щели ʔ (U + 0294), интерробанг ‽ (U + 203D), перевернутый вопросительный знак ¿(U + 00BF) и двойной вопросительный знак ⁇ (U + 2047) разрешены во всех именах файлов. |
% | процент | Используется как подстановочный знак в RT-11 ; отмечает один символ. Не особо в Windows. |
* | asterisk или звездочка | Используется как подстановочный знак в Unix, DOS, RT-11, VMS и Windows. Отмечает любую последовательность символов (Unix, Windows, DOS) или любую последовательность символов в базовом имени или расширении (таким образом, «*. *» В DOS означает «все файлы». Разрешено в именах файлов Unix, см. Примечание 1 . Оператор звездочка * (U + 2217) разрешен в именах файлов Windows |
: | двоеточие | Используется для определения точки монтирования / диска в Windows; используется для определения виртуального устройства или физического устройства, такого как диск на AmigaOS, RT-11 и VMS; используется в качестве разделителя путей в классической Mac OS . Удваивается после имени в VMS, указывает имя узла DECnet (эквивалент NetBIOS (Windows сети) имя хоста, которому предшествует «\\».). Двоеточие также используется в Windows для отделения альтернативного потока данных от основного файла. Буквенное двоеточие ꞉ (U + A789) и символ соотношения ∶ (U + 2236) разрешены в именах файлов Windows. В шрифте Segoe UI , используемом в Проводнике Windows , глифы для двоеточия и буквы двоеточия идентичны. |
| | по вертикали bar или pipe | Обозначает конвейерную обработку программного обеспечения в Unix, DOS и Windows; разрешено в именах файлов Unix, см. Примечание 1 . стоматологический щелчок ǀ (U + 01C0) разрешен в именах файлов Windows. |
« | прямая двойная кавычка | Одинарные кавычки ‘(U + 0027) и ’(U + 2019) и изогнутые двойные кавычки« (U + 201C) и »(U + 201D) разрешены в любом месте в именах файлов. См. Примечание 1 . |
меньше чем | Используется для перенаправления ввода , разрешено в именах файлов Unix, см. Примечание 1 . | |
> | больше чем | Используется для перенаправления output , разрешено в именах файлов Unix, см. Примечание 1 . |
. | точка или точка | Разрешены, но последнее вхождение будет интерпретироваться как разделитель расширений в VMS , DOS и Windows. В других операционных системах это обычно рассматривается как часть имени файла, и может быть разрешено более одной точки (точка). В Unix начальная точка означает, что файл или папка обычно скрыты. |
, | запятая | Разрешена, но рассматривается как разделитель интерпретаторами командной строки COMMAND.COM и CMD.EXE в DOS и Windows. |
; | точка с запятой | Допускается, но обрабатывается как разделитель интерпретаторами командной строки COMMAND.COM и CMD.EXE в DOS и Windows. |
= | = знак | Разрешено, но обрабатывается как разделитель интерпретаторами командной строки COMMAND.COM и CMD.EXE в DOS и Windows. |
пробел | Допускается, но пробел также используется как разделитель параметров в приложениях командной строки . Это можно решить, указав полное имя файла. |
Примечание 1. Хотя они разрешены в именах файлов и папок Unix, для большинства оболочек Unix требуются определенные символы, такие как пробелы, , |, \, а иногда:, (,), & ,;, #, а также подстановочные знаки, такие как? и *, в кавычки или экранированный :
пять \ и \ шесть \ (пример экранирования)
‘пять и шесть или «пять и шесть (примеры цитирования)
Символ 0xE5 не разрешался в качестве первой буквы в имени файла в 86-DOS и MS-DOS / PC DOS 1.x- 2.x, но может использоваться в более поздних версиях.
В утилитах Windows пробел и точка не допускаются в качестве последнего символа имени файла. Точка допускается в качестве первого символа, но в некоторых Windows приложения, такие как Проводник Windows , запрещают создание или переименование таких файлов (несмотря на то, что это соглашение используется в Unix-подобных системах для описания скрытых файлов и каталогов). Обходные пути включают добавление точки, когда переименование файла (который впоследствии автоматически удаляется) с использованием альтернативных файловых менеджеров , создание файла с помощью командной строки или сохранение файла с желаемым именем из приложения.
Некоторые файловые системы в данной операционной системе tem (особенно файловые системы, изначально реализованные в других операционных системах) и определенные приложения в этой операционной системе могут применять дополнительные ограничения и интерпретации. Подробнее об ограничениях см. сравнение файловых систем .
В Unix-подобных системах, DOS и Windows имена файлов «.» и «..» имеют особое значение (текущий и родительский каталог соответственно). Windows 95/98 / ME также использует имена типа «. », «. » и т. Д. Для обозначения каталогов прародителей или прародителей. Все версии Windows запрещают создание имен файлов, состоящих только из точек, хотя имена, состоящие из трех точек («. ») или более, допустимы в Unix.
Кроме того, в утилитах Windows и DOS некоторые слова также зарезервированы и не могут использоваться в качестве имен файлов. Например, DOSфайлы устройств :
Системы с этими ограничениями вызывают несовместимость с некоторыми другими файловыми системами. Например, Windows не сможет обработать или создать отчеты об ошибках для этих допустимых имен файлов UNIX: aux.c, q «uote» s.txt или NUL.txt.
Имена файлов NTFS, которые используются внутри, включают:
Сравнение ограничений имени файла
Система | Регистр с учетом | Регистр с сохранением | Допустимый набор символов | Зарезервированные символы | Зарезервированные слова | Максимальная длина (символы) | Комментарии |
---|---|---|---|---|---|---|---|
8-битная FAT | ? | ? | 7-битный ASCII (но хранится в байтах) | первый символ не может быть 0x00 или 0xFF | 9 | Максимальный предел базового имени 9 символов для последовательных файлов (без расширения) или максимум 6- и 3-символьное расширение для двоичных файлов; см. 6.3 имя файла | |
FAT12 , FAT16 , FAT32 | Нет | Нет | любое SBCS / DBCS OEM-кодовая страница | 0x00-0x1F 0x7F «* /: ? \ | +,.; = [] (В некоторых средах также:! @; DOS 1 / 2 не допускает 0xE5 в качестве первого символа) | Имена устройств, включая: $ IDLE $ AUX COM1… COM4 CONFIG $ CLOCK $ KEYBD $ LPT1… LPT4 LST NUL PRN SCREEN $ (в зависимости от AVAILDEV статус везде или только в виртуальном каталоге \ DEV \) | 11 | Максимальное количество символов в базовом имени 8 и расширение 3 символа; см. 8.3 filename |
VFAT | Нет | Да | Unicode , с использованием UCS-2 кодировки | 0x00-0x1F 0x7F «* /: ? \ | | 255 | ||
exFAT | Нет | Да | Unicode , используя UTF-16 кодировку | 0x00-0x1F 0x7F «* /: ? \ | | 255 | ||
NTFS | Необязательно | Да | Unicode , с использованием UTF-16 кодировки | 0x00-0x1F 0x7F «* /: ? \ | | Только в корневом каталоге: $ AttrDef $ BadClus $ Bitmap $ Boot $ LogFile $ MFT $ MFTMirr pagefile.sys $ Secure $ UpCase $ Volume $ Extend $ Extend \ $ ObjId $ Extend \ $ Quota $ Extend \ $ Повторная обработка ($ Extend — это каталог) | 255 | Пути могут содержать до 32000 символов. |
Запрещает использование символов в диапазоне 1-31 (0x01-0x1F) и символов «* /: ? \ |, Если имя не помечено как находящееся в пространстве имен Posix. NTFS разрешает каждый компонент пути (каталог или имя файла) должно состоять из 255 символов.