Какие символы используются в шаблоне имени файла
Для поиска, копирования, перемещения и удаления файлов операционная система предоставляет средства для указания не одного, а сразу группы существующих на диске файлов путем задания шаблонов имени. Шаблоном является имя файла, в котором используются символы-заменители, называемые также символами подстановки или маской. Шаблон обозначает не единственный файл, а группу файлов, имена и/или расширения которых сопоставляются с данным шаблоном.
Вопросительный знак (?) в имени файла (расширении) означает, что в данной позиции может стоять любой (но только один!) допустимый символ. В имени файла (расширении) может быть несколько вопросительных знаков. Если символ ? стоит в конце имени или расширения, то в этой позиции может быть пусто. Например: PROG?.EXE — это шаблон исполняемого файла, имя которого начинается с букв PROG и содержит в пятой позиции любой допустимый символ. Этими файлами могут быть PROGl.EXE, PROGA.EXE, PROG.EXE и т. п.
Звездочка (*)в имени (расширении) файла означает, что на ее месте, начиная с этой позиции и до конца имени (расширения), могут стоять один или несколько любых допустимых символов или присутствие символов не обязательно (пусто). В имени или расширении допускается только по одному символу *, и все символы, следующие за ним, игнорируются.
Например, *.ASM — все файлы с расширением ASM;
Prog.* — все файлы с именем Prog с любым расширением;
*.* — все файлы с любыми расширениями;
ABC*.D? — все файлы, имена которых начинаются с ABC, а расширения начинаются с буквы D и имеют в его второй позиции любой допустимый символ, на пример ABCRK.DA, ABC.D1, ABC1.D,
Шаблоны удобно использовать в командах DOS и при работе с программными оболочками (файловыми менеджерами), например, Notton Commander, Windows Commander.
Восстановление файловой системы
В процессе работы компьютера случаются сбои (зависание программ, внезапное отключение питания и др), в результате происходит неправильное завершение работы приложений и операционной системы, что может привести к повреждениям отдельных кластеров и файлов.
Для восстановления файловой системы используются специальные программы. В операционной системе Windows такой программой является служебная программа Проверка диска.
NTFS хранит имена файлов в Юникоде. В отличие от этого, старые файловые системы FAT12, FAT16 и FAT32 используют набор символов OEM. Дополнительные сведения см. в разделе Кодовые страницы.
Приложения, не относящиеся к Юникоду, которые создают ФАЙЛЫ FAT, иногда приходится использовать стандартные функции преобразования библиотеки среды выполнения C для преобразования между набором символов кодовой страницы Windows и набором символов кодовой страницы OEM. При реализации функций файловой системы Юникод не требуется выполнять такие переводы.
Приложение может использовать универсальные типы строк, как описано в разделе Windows Типы данных для строк. Приложение также может использовать прототипы универсальных функций с помощью методов, описанных в соглашениях о прототипах функций. Для универсальных строковых типов или прототипов универсальных функций приложение может использовать один исходный файл для компиляции юникода или версии, отличной от Юникода. Чтобы разрешить это, приложение предоставляет макросы для функций, которые не вызываются при компиляции для Юникода.
В файловых системах NTFS и FAT специальные символы имен файлов: "\", "/", ".", "?"" и "*". На кодовых страницах OEM эти специальные символы находятся в диапазоне ASCII символов (0x00 до 0x7F). Их эквиваленты Юникода являются одинаковыми значениями в 2-байтовой форме, 0x0000 через 0x007F.
Windows кодовой страницы и наборы символов кодовой страницы OEM, используемые в операционных системах японского языка, содержат символ йены ('), а не обратную косую черту (\). Таким образом, символ йены является запрещенным символом для файловых систем NTFS и FAT. При сопоставлении Юникода с кодовой страницей японского языка WideCharToMultiByte и другими функциями преобразования сопоставляют обратную косую черту (U+005C) и обычный символ Юникода (U+00A5) с этим же символом. По соображениям безопасности приложения обычно не должны разрешать символ U+00A5 в строке Юникода, которая может быть преобразована для использования в качестве имени FAT-файла. Дополнительные сведения см. в разделе "Вопросы безопасности: международные функции".
Все файловые системы, поддерживаемые Windows, используют концепцию файлов и каталогов для доступа к данным, хранящимся на диске или устройстве. Windows разработчики, работающие с API-интерфейсами Windows для операций ввода-вывода файлов и устройств, должны понимать различные правила, соглашения и ограничения имен файлов и каталогов.
Доступ к данным можно получить с дисков, устройств и сетевых ресурсов с помощью API-интерфейсов ввода-вывода файлов. Файлы и каталоги, наряду с пространствами имен, являются частью концепции пути, который представляет собой строковое представление места для получения данных независимо от того, находится ли он с диска или устройства или сетевого подключения для определенной операции.
Некоторые файловые системы, такие как NTFS, поддерживают связанные файлы и каталоги, которые также соответствуют соглашениям об именовании файлов и правилам так же, как обычный файл или каталог. Дополнительные сведения см. в разделе "Жесткие ссылки" и "Соединения" , " Точки повторного анализа" и "Операции с файлами".
Дополнительные сведения см. в следующих подразделах:
Дополнительные сведения о настройке Windows 10 для поддержки длинных путей к файлам см. в разделе "Ограничение максимальной длины пути".
Пространства имен
В api-интерфейсах Windows используются две основные категории соглашений о пространстве имен, которые обычно называются пространствами имен NT и пространствами имен Win32. Пространство имен NT было разработано для самого низкого уровня пространства имен, в котором могут существовать другие подсистемы и пространства имен, включая подсистему Win32 и, по расширению, пространства имен Win32. POSIX — это еще один пример подсистемы в Windows, построенной на основе пространства имен NT. Ранние версии Windows также определили несколько предопределенных или зарезервированных имен для определенных специальных устройств, таких как последовательные и параллельные порты, и консоль отображения по умолчанию в рамках того, что теперь называется пространством имен устройств NT, и по-прежнему поддерживаются в текущих версиях Windows для обратной совместимости.
Пространства имен устройств Win32
Префикс "\\.\" будет обращаться к пространству имен устройства Win32 вместо пространства имен файлов Win32. Таким образом, доступ к физическим дискам и томам осуществляется напрямую без прохождения файловой системы, если API поддерживает этот тип доступа. Таким образом можно получить доступ к нескольким устройствам, кроме дисков (например, с помощью функций CreateFile и DefineDosDevice ).
Например, если вы хотите открыть последовательный порт связи системы 1, можно использовать com1 в вызове функции CreateFile . Это работает потому, что COM1–COM9 является частью зарезервированных имен в пространстве имен NT, хотя при использовании префикса "\\.\" также будут работать с этими именами устройств. Для сравнения, если установлена 100-последовательная плата расширения портов и вы хотите открыть COM56, ее нельзя открыть с помощью COM56, так как для COM56 нет предопределенного пространства имен NT. Его необходимо открыть с помощью "\\.\COM56", так как "\\\.\" переходит непосредственно в пространство имен устройства, не пытаясь найти предопределенный псевдоним.
Еще одним примером использования пространства имен устройства Win32 является использование функции CreateFile с "\\.\PhysicalDriveX" (где X является допустимым целым числом) или "\\.\CdRomX". Это позволяет обращаться к этим устройствам напрямую, обходя файловую систему. Это работает потому, что эти имена устройств создаются системой по мере перечисления этих устройств, а некоторые драйверы также создают другие псевдонимы в системе. Например, драйвер устройства, реализующий имя C:\. имеет собственное пространство имен, которое также может быть файловой системой.
ИНТЕРФЕЙСы API, которые проходят через функцию CreateFile , обычно работают с префиксом "\\.\", так как CreateFile — это функция, используемая для открытия файлов и устройств в зависимости от используемых параметров.
При работе с функциями API Windows следует использовать префикс "\\.\" для доступа только к устройствам, а не к файлам.
Большинство API не поддерживают "\\.\"; Распознаются только те, которые предназначены для работы с пространством имен устройства. Всегда проверяйте справочный раздел для каждого API, чтобы убедиться.
Полные и относительные пути
Для функций API Windows, которые управляют файлами, имена файлов часто могут быть относительными к текущему каталогу, а некоторые API требуют полного пути. Имя файла относительно текущего каталога, если оно не начинается со следующего:
- UNC-имя любого формата, которое всегда начинается с двух символов обратной косой черты ("\\"). Дополнительные сведения см. в следующем разделе.
- Конструктор дисков с обратной косой чертой, например "C:\" или "d:\".
- Одна обратная косая черта, например "\directory" или "\file.txt". Это также называется абсолютным путем.
Если имя файла начинается только с конструктора дисков, но не обратной косой черты после двоеточия, он интерпретируется как относительный путь к текущему каталогу на диске с указанной буквой. Обратите внимание, что текущий каталог может быть корневым каталогом в зависимости от того, что он был установлен во время последней операции изменения каталога на этом диске. Ниже приведены примеры этого формата:
- "C:tmp.txt" ссылается на файл с именем "tmp.txt" в текущем каталоге на диске C.
- "C:tempdir\tmp.txt" относится к файлу в подкаталоге к текущему каталогу на диске C.
Путь также считается относительным, если он содержит "двойные точки"; то есть два периода вместе в одном компоненте пути. Этот специальный описатель используется для обозначения каталога над текущим каталогом, который иначе называется родительским каталогом. Ниже приведены примеры этого формата:
- ".. \tmp.txt" указывает файл с именем tmp.txt, расположенный в родительском каталоге текущего каталога.
- ".. \.. \tmp.txt" указывает файл, который является двумя каталогами над текущим каталогом.
- ".. \tempdir\tmp.txt" указывает файл с именем tmp.txt, расположенный в каталоге с именем tempdir, который является одноранговым каталогом текущего каталога.
Относительные пути могут объединять оба примера типов, например "C. \tmp.txt". Это полезно, так как система отслеживает текущий диск вместе с текущим каталогом этого диска, он также отслеживает текущие каталоги в каждой из разных букв дисков (если в вашей системе несколько), независимо от того, какой диктор диска установлен в качестве текущего диска.
Пространства имен файлов Win32
Префикс пространства имен Win32 и соглашения приведены в этом разделе и в следующем разделе с описанием их использования. Обратите внимание, что эти примеры предназначены для использования с функциями API Windows и не все обязательно работают с приложениями оболочки Windows, такими как Windows Explorer. По этой причине существует более широкий спектр возможных путей, чем обычно доступны в приложениях оболочки Windows, и Windows приложения, которые используют преимущества этого, можно разработать с помощью этих соглашений о пространстве имен.
Так как он отключает автоматическое расширение строки пути, префикс "\\?\" также позволяет использовать ".." и "." в именах путей, которые могут быть полезны при попытке выполнить операции с файлом с этими зарезервированными относительными описателями пути в рамках полного пути.
Многие, но не все API-интерфейсы ввода-вывода файлов поддерживают "\\?\"; Необходимо ознакомиться со справочной темой для каждого API, чтобы убедиться.
Обратите внимание, что API Юникода должны использоваться для проверки того, что префикс "\?\" позволяет превысить MAX_PATH
Пространства имен NT
Существуют также API, которые позволяют использовать соглашение о пространстве имен NT, но диспетчер объектов Windows делает это ненужным в большинстве случаев. Чтобы проиллюстрировать, полезно просмотреть пространства имен Windows в браузере системных объектов с помощью средства winObj Windows Sysinternals. При запуске этого средства отображается пространство имен NT, начинающееся с корневого каталога, или "\". Вложенная папка с именем "Global??" — это место расположения пространства имен Win32. Именованные объекты устройства находятся в пространстве имен NT в подкаталоге Device. Здесь также можно найти Serial0 и Serial1, объекты устройства, представляющие первые два COM-порта, если они присутствуют в системе. Объект устройства, представляющий том, будет примерно таким, как HarddiskVolume1, хотя числовой суффикс может отличаться. Имя DR0 в подкаталоге "Harddisk0" является примером объекта устройства, представляющего диск и т. д.
Чтобы сделать эти объекты устройств доступными Windows приложениями, драйверы устройств создают символьную ссылку (символьную ссылку) в пространстве имен Win32 "Global??", к соответствующим объектам устройства. Например, COM0 и COM1 в подкаталоге "Global??" — это просто символьные ссылки на Serial0 и Serial1, "C:" — это символьная ссылка на HarddiskVolume1, "Physicaldrive0" — это символьная ссылка на DR0 и т. д. Без символьного канала указанное устройство Xxx не будет доступно ни одному приложению Windows с помощью соглашений о пространстве имен Win32, как описано выше. Однако дескриптор можно открыть на этом устройстве с помощью любых API, поддерживающих абсолютный путь к пространству имен NT формата \Device\Xxx.
Благодаря добавлению поддержки нескольких пользователей через службы терминалов и виртуальные машины стало еще больше необходимо виртуализировать корневое устройство на уровне системы в пространстве имен Win32. Для этого добавьте символьную ссылку с именем GLOBALROOT в пространство имен Win32, которое можно увидеть в подкаталоге "Global??" средства браузера WinObj, описанного ранее, и сможете получить доступ через путь "\\?\GLOBALROOT". Этот префикс гарантирует, что следующий путь выглядит в истинном корневом пути диспетчера системных объектов, а не в зависимом от сеанса пути.
Bash, а также другие командные оболочки Linux и средства языков программирования позволяют находить в структуре дерева каталогов те файлы, имена которых соответствуют определенному шаблону имени файла. В случае командной оболочки именно она сравнивает с шаблоном имя очередного файла. Если оно соответствует шаблону, то файл будет учтен, если нет – будет пропущен. Шаблон можно сравнить с коробкой, в которую влезет не каждый объект. Не только из-за размеров, также из-за несовпадения формы коробки и предмета.
Зачем нужны шаблоны имен? Часто требуется выполнить однотипные действия над группой файлов. Описывать эти действия по отношению к каждому отдельному файлу было бы трудоемкой задачей. Таким образом, шаблоны позволяют выделить группу файлов, чьи имена удовлетворяют определенным условиям, из общей массы.
Кроме того, шаблоны часто используют для поиска файлов.
Шаблоны имен файлов и каталогов задаются с помощью специальных символов. Чаще используются два: * – звездочка, ? – знак вопроса.
Звездочкой (*) в шаблоне обозначают любую группу символов. Их количество роли не играет. Это могут быть пять, десять, один символ или даже ни одного. Так, например, шаблону, состоящему всего из одного символа * , будет соответствовать абсолютно любой файл. Использование шаблона *.html позволит выделить все html-файлы, а шаблон my*.odt – файлы, начинающиеся с "my" и оканчивающиеся на ".odt". Шаблон *2010* определяет все файлы, в именах которых присутствует группа символов 2010.
Знаком вопроса (?) в шаблоне обозначают любой один символ. Например, под шаблон otchet. подойдут файлы, имеющие расширение из любых трех букв, но начинающиеся именно так, как задано в шаблоне. Шаблону descrip?ion.pdf будут соответствовать файлы с заданным именем, но вместо знака вопроса может стоять любой символ.
Кроме символов звезды и вопроса, существуют более сложные правила записи шаблонов. Так использование квадратных скобок [ ] со списком вложенных значений позволяет осуществлять более гибкий поиск файлов. Пусть требуется найти все файлы, имена которых начинаются с буквы m, при этом регистр не учитывается. Шаблон будет выглядеть так: [mM]* .
Если надо одновременно найти файлы, начинающиеся на буквы, идущие подряд в алфавите, то задается диапазон. Например, под шаблон [m-pM-P]. png подойдут все файлы с расширением png, имена которых состоят из четырех букв, причем первая буква m или n или o или p без учета регистра.
Понятно, что в одном шаблоне имени файла можно использовать разные специальные символы. Например, [aA]*. .
В Bash шаблоны имен используются с командами, которые в качестве аргументов принимают имена файлов. Например, ls – просмотр каталогов, cp – копирование файлов, find – поиск файлов и др. Однако на самом деле командам передается не шаблон, а уже подошедшие под него файлы. Определением подходящих под шаблон объектов занимается сама командная оболочка Linux, в данном случае Bash.
Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.
Все современные дисковые операционные системы обеспечивают создание файловой системы, предназначенной для хранения данных на дисках и обеспечения доступа к ним. Принцип организации файловой системы зависит от операционной системы. Наиболее распространенный тип — табличный.
Логическое имя винчестера – С:
Если жесткий диск разбит на несколько логических разделов, то каждый из них именуется буквами английского алфавита: С:, D:, E:, F: и т.д.
Логическое имя дисковода лазерного диска – последняя буква из списка логических имен дисков данного компьютера.
Файл — это именованная последовательность байтов произвольной длины .
ВАК — копия ранее созданного файла;
$$$ — временный файл, автоматически созданный какой-либо программой самостоятельно.
Кроме имени, файл обладает рядом характеристик:
- дата создания файла;
- время создания и редактирования файла;
- длина (объем) файла.
Атрибуты файла указывают на характер его использования и возможность доступа к нему:
• Read-Only — файл, использующийся только для чтения; чаще всего он не может быть уничтожен или отредактирован, но допустимо создание копии и операций над ней;
• Archive — архивный, создается при изменении файла и хранится в архиве файловой системы;
• Hidden — скрытый файл;
• System — системный.
Если файлу не присвоен ни один из перечисленных атрибутов, то он называется Дата создания и время создания фиксируются в момент создания и изменения файла по
показаниям системных часов ПК.
Для поиска файлов полезно использовать шаблоны имен. Шаблон имени состоит также как и имя файла из 2-х частей, разделенных точкой. При задании шаблона используются символы-джокеры (метасимволы) * и ?. Причем:
* – заменяет произвольное количество любых;
? – заменяет один произвольный символ.
*.doc – шаблон для файлов с расширением .doc;
t*.xls – шаблон для файлов, имя которых начинается на букву t, а расширение .xls;
Все файлы на дисках располагаются в каталогах или папках.
Папка (каталог, директория) – специальный файл, содержащий информацию об обычных файлах, сгруппированных в некоторый единый список по тому или иному признаку либо самим пользователем (например, служебные записки, исходящие письма, методические разработки, любимые игровые программы и т.д.), либо разработчиками ПО (набор файлов, составляющих единый программный пакет). Такое объединение файлов выполняется, как правило, с целью облегчения поиска информации на компьютере, а также для удобства групповой (одновременной) обработки обычных файлов и папок. В папке (каталоге, директории) кроме перечня входящих в него файлов содержится также системная информация относительно характеристик (атрибутов) этих файлов.
На каждом носителе информации существует главный или корневой каталог, в котором располагаются все остальные каталоги, называемые подкаталогами и некоторые файлы. Таким образом, создается иерархическая структура. Каталог, с которым в настоящий момент работает пользователь называется текущим. Внутри папки (каталога, директории) могут находиться как обычные файлы, так и вложенные в нее папки-потомки, которые в свою очередь могут содержать папки следующего уровня вложенности. Таким способом реализуется иерархическая система вложенных друг в друга папок и файлов.
Для организации доступа к файлу во многих ОС используется один и тот же метод, состоящий в формировании символьной строки – пути доступа, в которой содержится информация о местоположении файла на ВЗУ (например, С:\Program Files\Microsoft Office\Office\Samples\Products.doc). Количество файлов или папок в корневом и не корневом каталогах – не ограничено! Суммарное количество символов в пути доступа к файлу – не более 260.
Файлы и каталоги являются самыми важными объектами файловой системы. Она необходима для того, чтобы ОС имела возможность работать с данными на жестком диске.
Понятие цилиндра
Во-первых, диск представляется как набор поверхностей. У гибких дисков их всего две (верхняя и нижняя), но жесткие диски — это на самом деле «этажерки», состоящие из нескольких пластин, поэтому количество поверхностей у них больше.
Во-вторых, каждая поверхность диска разделяется на кольцевые дорожки, а каждая дорожка — на секторы. Размеры секторов фиксированы и равны 512 байт.
Чтобы найти на диске тот или иной файл, надо знать, где он расположен, то есть, нужен его адрес. Проще всего было бы записать адрес файла в виде номера поверхности, номера дорожки и номера сектора, но на самом деле это выполняется не совсем так. Дело в том, что у каждой поверхности есть своя головка для чтения/ записи, и эти головки перемещаются не порознь, а одновременно. То есть, если, например, пятая головка подводится к тридцатой дорожке, то и все головки подводятся к своим тридцатым дорожкам. Поэтому вместо понятия дорожки используют понятие цилиндра. Цилиндр— это совокупность всех дорожек, имеющих одинаковые номера, то есть равноудаленных от оси вращения. Поэтому реально местоположение файла на жестком диске определяется номером цилиндра, номером поверхности и номером сектора.
Понятие кластера . Сектор — это наименьшая единица хранения данных, но для адресации она используется далеко не во всех файловых системах. Для этого она слишком мала. Такие операционные системы, как MS-DOS, Windows, OS/2, используют для адресации более крупную единицу хранения, называемую кластером. Кластер — это группа соседних секторов. Размер кластера зависит от размера жесткого диска. Чем больше диск, тем большим назначается размер кластера. Типовые значения: 8,16,32 или 64 сектора.
Данные о том, в каком кластере диска начинается тот или иной файл, хранятся в системной области диска в специальных таблицах размещения файлов (FAT-таблицах). Поскольку нарушение FAT-таблицы приводит к невозможности воспользоваться данными, записанными на диске, к ней предъявляются особые требования надежности, и она существует в двух экземплярах, идентичность которых регулярно контролируется средствами операционной системы.
В настоящее время операционные системы Windows 98, Windows 2000 и Windows Millenium обеспечивают более совершенную файловую систему — FAT32 с 32-разрядными полями в таблице размещения файлов. Это позволяет работать с любыми современными жесткими дисками.
Файлы и каталоги являются самыми важными объектами файловой системы. Она необходима для того, чтобы ОС имела возможность работать с данными на жестком диске.
Файловая система - это методы и структуры данных, которые используются ОС для хранения файлов на диске или его разделе.
Существует множество файловых систем, которые используют различные операционные системы. Основными из них являются файловые системы FAT32 и NTFS, с которыми работают операционные системы класса Windows.
FAT32 (File Allocation Table) разработана компанией Microsoft в конце 1996 года и первой ОС, которая ее поддерживала, была Windows 95 OSR2. В отличие от используемой ранее FAT16 в данной файловой системе использовалась 32-битовая таблица размещения файлов, что позволило уменьшить размер кластера (кластер - минимальная единица данных, которая используется при работе с винчестером посредством ОС) и добиться больших по объему разделов, а также содержать в них большое количество файлов(свыше 65 тыс. файлов).
Основой FAT32 являются:
- загрузочная запись(Boot Record) - область хранения информации, необходимой для загрузки ОС(размер раздела, количество свободного места, размер кластера и т.д.)
- таблица размещения файлов(FAT - File Allocation Table) - область диска, в которой содержится информация о расположении файлов на разделах диска.
- корневой каталог(Root Directory)- главный каталог на логическом диске, в котором содержится информация о его файлах и папках.
В апреле 1987 года Microsoft и IBM начали совместную разработку новой ОС OS/2. Под эту систему специально была разработана файловая система, призванная обеспечить стабильную и быструю работу с диском и облегчить труд администраторов. Но затем между фирмами возникли разногласия, в результате чего свет увидели OS/2 с файловой системой HPFS от IBM и Windows NT с файловой системой NTFS (New Technology File System) от Microsoft.
Основой NTFS является главная таблица файлов (Master File Table, MFT). MFT резервирует под себя примерно 12% раздела. Если места на диске становится мало, MFT сокращается в 2 раза, после появления вновь восстанавливается и т.д. Файлы здесь состоят из двух частей: обязательной записи о них в MFT и опциональных параметров (свойств), называемых потоками.
Имена файлов и каталогов
Все файловые системы соответствуют одинаковым общим соглашениям об именовании для отдельного файла: базовому имени файла и необязательному расширению, разделенному точкой. Однако каждая файловая система, например NTFS, CDFS, exFAT, UDFS, FAT и FAT32, может иметь определенные и различные правила формирования отдельных компонентов в пути к каталогу или файлу. Обратите внимание, что каталог — это просто файл с особым атрибутом, назначающим его в качестве каталога, но в противном случае должен соответствовать всем тем же правилам именования, что и обычный файл. Так как каталог терминов просто относится к специальному типу файла, насколько это касается файловой системы, некоторые справочные материалы будут использовать общий файл терминов для охвата как концепций каталогов, так и файлов данных. Из-за этого, если не указано иное, любые правила именования или использования или примеры для файла также должны применяться к каталогу. Путь к термину относится к одному или нескольким каталогам, обратным косикам и, возможно, имени тома. Дополнительные сведения см. в разделе "Пути ".
Ограничения количества символов могут отличаться и могут отличаться в зависимости от используемого формата префикса имени файловой системы и пути. Это еще больше усложняется поддержкой механизмов обратной совместимости. Например, более старая файловая система MS-DOS FAT поддерживает не более 8 символов для имени базового файла и 3 символа для расширения в общей сложности 12 символов, включая разделитель точек. Это обычно называется именем файла 8.3. Windows файловых систем FAT и NTFS не ограничиваются именами файлов 8.3, так как они поддерживают длинные имена файлов, но по-прежнему поддерживают версию 8.3 длинных имен файлов.
Ограничение максимальной длины пути
В выпусках Windows до Windows 10 версии 1607 максимальная длина пути равна MAX_PATH, которая определяется как 260 символов. В более поздних версиях Windows изменение раздела реестра или использование средства групповая политика требуется для удаления ограничения. Полные сведения см. в разделе об ограничении максимальной длины пути .
Короткие и длинные имена
Длинное имя файла считается любым именем файла, превышающим короткое соглашение об именовании стилей MS-DOS (также называемое 8.3). При создании длинного имени файла Windows также может создать короткую форму имени 8.3, которая называется псевдонимом 8.3 или коротким именем, а также хранить его на диске. Этот псевдоним версии 8.3 можно отключить по соображениям производительности по всей системе или для указанного тома в зависимости от конкретной файловой системы.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: псевдоним 8.3 нельзя отключить для указанных томов до Windows 7 и Windows Server 2008 R2.
Во многих файловых системах имя файла будет содержать тильду (~) в каждом компоненте имени, которое слишком долго соответствует правилам именования 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) в зависимости от фактического имени файла. В этом случае короткое имя файла будет заменено, если это возможно.
Путь к указанному файлу состоит из одного или нескольких компонентов, разделенных специальным символом (обратная косая черта), при этом каждый компонент обычно является именем каталога или именем файла, но с некоторыми заметными исключениями, рассмотренными ниже. Зачастую крайне важно интерпретировать системой путь, как выглядит начало или префикс пути. Этот префикс определяет пространство имен , используемое путем, а также специальные символы, используемые в какой позиции в пути, включая последний символ.
Если компонент пути является именем файла, он должен быть последним компонентом.
Каждый компонент пути также будет ограничен максимальной длиной, указанной для конкретной файловой системы. Как правило, эти правила делятся на две категории: короткие и длинные. Обратите внимание, что имена каталогов хранятся файловой системой как особый тип файла, но правила именования файлов также применяются к именам каталогов. Чтобы подвести итог, путь — это просто строковое представление иерархии между всеми каталогами, которые существуют для определенного файла или имени каталога.
Соглашения об именах
Следующие фундаментальные правила позволяют приложениям создавать и обрабатывать допустимые имена файлов и каталогов независимо от файловой системы:
Используйте точку, чтобы отделить имя базового файла от расширения в имени каталога или файла.
Используйте обратную косую черту (\) для разделения компонентовпути. Обратная косая черта делит имя файла на путь к нему и одно имя каталога из другого имени каталога в пути. Обратную косую черту нельзя использовать в имени фактического файла или каталога, так как это зарезервированный символ, разделяющий имена на компоненты.
Используйте обратную косую черту в качестве части имен томов, например "C:\". в папке "C:\path\file" или "\\server\share" в "\server\share\path\file" для имен UNC. Дополнительные сведения об именах UNC см. в разделе ограничения максимальной длины пути .
Не предполагайте конфиденциальность регистра. Например, рассмотрим имена ОСКАРа, Оскара и оскара, хотя некоторые файловые системы (например, файловая система, совместимая с POSIX), могут рассматривать их как разные. Обратите внимание, что NTFS поддерживает семантику POSIX для учета регистра, но это не поведение по умолчанию. Дополнительные сведения см. в разделе CreateFile.
Конструкторы томов (буквы диска) точно так же не учитывают регистр. Например, "D:\" и "d:\" ссылаться на тот же том.
Используйте любой символ в текущей кодовой странице для имени, включая символы и символы Юникода в расширенном наборе символов (128–255), за исключением следующих:
Следующие зарезервированные символы:
- < (меньше чем);
- > (больше чем);
- : (двоеточие)
- " (двойная кавычка)
- / (косая черта)
- \ (обратная косая черта)
- | (вертикальная полоса или канал)
- ? (вопросительный знак)
- * (звездочка)
Целочисленное значение ноль, иногда называемое символом NUL ASCII.
Символы, целочисленные представления которых находятся в диапазоне от 1 до 31, за исключением альтернативных потоков данных, в которых разрешены эти символы. Дополнительные сведения о потоках файлов см. в разделе "Файл Потоки".
Любой другой символ, который не допускает целевая файловая система.
Используйте точку в качестве компонента каталога в пути для представления текущего каталога, например ".\temp.txt". Дополнительные сведения см. в разделе "Пути".
Используйте два последовательных периода (.).) в качестве компонента каталога в пути для представления родительского элемента текущего каталога, например ".. \temp.txt". Дополнительные сведения см. в разделе "Пути".
Не используйте следующие зарезервированные имена для имени файла:
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9. Кроме того, избегайте этих имен, за которым следует немедленное расширение; Например, NUL.txt не рекомендуется. Дополнительные сведения см. в разделе Пространства имен.
Не заканчивайте имя файла или каталога пробелом или точкой. Хотя базовая файловая система может поддерживать такие имена, оболочка Windows и пользовательский интерфейс не поддерживаются. Однако можно указать точку в качестве первого символа имени. Например, ".temp".
Читайте также: