Файлы в программе имеют имена

Все файловые системы, поддерживаемые Windows, используют концепцию файлов и каталогов для доступа к данным, хранящимся на диске или устройстве. Разработчики Windows, работающие с API Windows для файлов и устройств ввода-вывода, должны понимать различные правила, соглашения и ограничения имен файлов и каталогов.

Доступ к данным можно получить с дисков, устройств и сетевых ресурсов с помощью API-интерфейсов файлового ввода-вывода. Файлы и каталоги, наряду с пространствами имен, являются частью концепции пути, который представляет собой строковое представление о том, где нужно получить данные, независимо от того, с диска или устройства или сетевого подключения для конкретной операции.

Некоторые файловые системы, такие как NTFS, поддерживают связанные файлы и каталоги, которые также следуют соглашениям об именовании файлов и правилам, как обычные файлы или каталоги. Дополнительные сведения см. в разделах Жесткие ссылки и соединения и Точки повторного анализа и операции с файлами.

Егэ информатика А3.Маски имен файлов

Дополнительные сведения см. в следующих подразделах:

  • Имена файлов и каталогов
  • Соглашения об именовании
  • Короткие и длинные имена
  • Полные и относительные пути
  • Ограничение максимальной длины пути
  • Пространства имен файлов Win32
  • Пространства имен устройств Win32
  • Пространства имен NT

Дополнительные сведения о настройке Windows 10 для поддержки длинных путей к файлам см. в статье Ограничение максимальной длины пути.

Имена файлов и каталогов

Все файловые системы следуют одинаковым общим соглашениям об именовании для отдельного файла: базовое имя файла и необязательное расширение, разделенное точкой. Однако каждая файловая система, например NTFS, CDFS, exFAT, UDFS, FAT и FAT32, может иметь определенные и разные правила формирования отдельных компонентов в пути к каталогу или файлу.

Обратите внимание, что каталог — это просто файл со специальным атрибутом, обозначающим его как каталог, но в противном случае он должен следовать тем же правилам именования, что и обычный файл. Так как термин каталог относится просто к особому типу файловой системы, некоторые справочные материалы будут использовать общий термин файл для охвата как таких понятий каталогов, так и файлов данных. По этой причине, если не указано иное, правила именования или использования или примеры для файла также должны применяться к каталогу. Термин путь относится к одному или нескольким каталогам, обратным косой чертам и, возможно, имени тома. Дополнительные сведения см. в разделе Пути .

Ограничения на количество символов также могут отличаться и могут отличаться в зависимости от используемого формата префикса имени пути и файловой системы. Это еще более осложняется поддержкой механизмов обратной совместимости. Например, более старая файловая система MS-DOS FAT поддерживает не более 8 символов для базового имени файла и 3 символа для расширения, в общей сложности 12 символов, включая разделитель точек. Обычно это называется именем файла 8.3. Файловые системы Windows FAT и NTFS не ограничиваются именами файлов 8.3, так как поддерживают длинные имена файлов, но по-прежнему поддерживают длинные имена файлов версии 8.3.

Как правильно называть файлы?

Соглашения об именах

Следующие основные правила позволяют приложениям создавать и обрабатывать допустимые имена для файлов и каталогов независимо от файловой системы.

  • Используйте точку, чтобы отделить имя базового файла от расширения в имени каталога или файла.
  • Используйте обратную косую черту () для разделения компонентовпути. Обратная косая черта разделяет имя файла от пути к нему и имя одного каталога от имени другого каталога в пути. Обратную косую черту нельзя использовать в имени фактического файла или каталога, так как это зарезервированный символ, который разделяет имена на компоненты.
  • Используйте обратную косую черту по мере необходимости в именах томов, например «C:» в «C:pathfile» или «\servershare» в «\serversharepathfile» для UNC-имен. Дополнительные сведения о UNC-именах см. в разделе Ограничение максимальной длины пути .
  • Не предполагайте учет регистра. Например, считайте имена ОСКАР, Оскар и Оскар одинаковыми, хотя некоторые файловые системы (например, файловая система, совместимая с POSIX) могут рассматривать их как разные. Обратите внимание, что NTFS поддерживает семантику POSIX для учета регистра, но это не поведение по умолчанию. Дополнительные сведения см. в разделе CreateFile.
  • В конструкторах томов (буквы диска) регистр также не учитывается. Например, «D:» и «d:» ссылаются на тот же том.
  • Используйте любой символ текущей кодовой страницы для имени, включая символы Юникода и символы в расширенном наборе символов (128–255), за исключением следующих:
  • Следующие зарезервированные символы:
  • < (меньше чем);
  • > (больше чем);
  • : (двоеточие)
  • » (двойная кавычка)
  • / (косая черта)
  • (обратная косая черта)
  • | (вертикальная полоса или канал)
  • ? (вопросительный знак)
  • * (звездочка)

Короткие и длинные имена

Длинное имя файла считается любым именем файла, превышающим короткое соглашение об именовании стилей 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) в зависимости от фактического имени файла. В этом случае по возможности подставляется короткое имя файла.

Пути

Путь к указанному файлу состоит из одного или нескольких компонентов, разделенных специальным символом (обратная косая черта), каждый из которых обычно является именем каталога или именем файла, но с некоторыми заметными исключениями, рассмотренными ниже. Это часто имеет решающее значение для интерпретации системой пути, как выглядит начало или префикс пути. Этот префикс определяет пространство имен , используемое путем, и, кроме того, какие специальные символы используются, в какой позиции в пути, включая последний символ.

Читайте также:
Проводник это программа предназначенная

Если компонент пути является именем файла, он должен быть последним компонентом.

Каждый компонент пути также будет ограничен максимальной длиной, указанной для конкретной файловой системы. Как правило, эти правила делятся на две категории: короткие и длинные. Обратите внимание, что имена каталогов хранятся файловой системой как особый тип файлов, но правила именования файлов также применяются к именам каталогов. Подводя итоги, путь — это просто строковое представление иерархии между всеми каталогами, которые существуют для определенного файла или имени каталога.

Полные и относительные пути

Для функций API Windows, которые управляют файлами, имена файлов часто могут быть относительны к текущему каталогу, в то время как для некоторых API требуется полный путь. Имя файла является относительным к текущему каталогу, если оно не начинается с одного из следующих значений:

  • UNC-имя любого формата, которое всегда начинается с двух символов обратной косой черты («\»). Дополнительные сведения см. в следующем разделе.
  • Конструктор дисков с обратной косой чертой, например «C:» или «d:».
  • Одна обратная косая черта, например «directory» или «file.txt». Это также называется абсолютным путем.

Если имя файла начинается только с конструктора диска, но не обратная косая черта после двоеточия, оно интерпретируется как относительный путь к текущему каталогу на диске с указанной буквой. Обратите внимание, что текущий каталог может быть корневым каталогом в зависимости от того, что ему было присвоено во время последней операции изменения каталога на этом диске. Ниже приведены примеры этого формата.

  • «C:tmp.txt» означает файл с именем «tmp.txt» в текущем каталоге на диске C.
  • «C:tempdirtmp.txt» относится к файлу в подкаталоге текущего каталога на диске C.

Путь также считается относительным, если он содержит «двойные точки»; то есть две точки в одном компоненте пути. Этот специальный описатель используется для обозначения каталога над текущим каталогом, который также называется родительским каталогом. Ниже приведены примеры этого формата.

  • «.. tmp.txt» указывает файл с именем tmp.txt, расположенный в родительском элементе текущего каталога.
  • «.. .. tmp.txt» указывает файл, который находится в двух каталогах выше текущего каталога.
  • «.. tempdirtmp.txt» указывает файл с именем tmp.txt, расположенный в каталоге tempdir, который является одноранговым каталогом текущего каталога.

Относительные пути могут объединять оба примера типов, например «C. tmp.txt». Это полезно, поскольку, хотя система отслеживает текущий диск вместе с текущим каталогом этого диска, она также отслеживает текущие каталоги в каждой из разных букв диска (если в системе их несколько), независимо от того, какой индекс диска задан в качестве текущего диска.

Ограничение максимальной длины пути

В выпусках Windows до Windows 10 версии 1607 максимальная длина пути MAX_PATH, которая определяется как 260 символов. В более поздних версиях Windows для удаления ограничения необходимо изменить раздел реестра или использовать средство групповая политика. Дополнительные сведения см. в разделе Ограничение максимальной длины пути .

Пространства имен

Существует две основные категории соглашений о пространствах имен, используемых в API Windows, которые обычно называются пространствами имен NT и пространствами имен Win32. Пространство имен NT было разработано как пространство имен самого низкого уровня, в котором могут существовать другие подсистемы и пространства имен, включая подсистему Win32 и пространства имен Win32. POSIX — еще один пример подсистемы в Windows, построенной на основе пространства имен NT. Ранние версии Windows также определяли несколько предопределенных или зарезервированных имен для определенных специальных устройств, таких как порты связи (последовательные и параллельные) и консоль отображения по умолчанию, как часть пространства имен устройств NT, и по-прежнему поддерживаются в текущих версиях Windows для обеспечения обратной совместимости.

Пространства имен файлов Win32

Префиксы пространства имен Win32 и соглашения приведены в этом и следующем разделах с описанием их использования. Обратите внимание, что эти примеры предназначены для использования с функциями API Windows и не всегда работают с приложениями оболочки Windows, такими как проводник Windows. По этой причине существует более широкий спектр возможных путей, чем обычно доступно в приложениях оболочки Windows, и приложения Windows, использующие это, можно разработать с помощью этих соглашений о пространстве имен.

Для файлового ввода-вывода префикс «?» к строке пути предписывает API Windows отключить весь синтаксический анализ строк и отправить строку, которая следует за ней, прямо в файловую систему. Например, если файловая система поддерживает большие пути и имена файлов, можно превысить ограничения MAX_PATH , которые в противном случае применяются API Windows. Дополнительные сведения об ограничении обычного максимального пути см. в предыдущем разделе Ограничение максимальной длины пути.

Так как он отключает автоматическое расширение строки пути, префикс «?» также позволяет использовать в именах пути «..» и «.», что может быть полезно, если вы пытаетесь выполнить операции с файлом с этими зарезервированными относительными описателями пути в качестве части полного пути.

Многие, но не все API-интерфейсы ввода-вывода файлов поддерживают «\?»; Чтобы убедиться в этом, ознакомьтесь со справочной статьей по каждому API.

Обратите внимание, что api Юникода следует использовать, чтобы убедиться, что префикс «?» позволяет превысить MAX_PATH

Пространства имен устройств 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, чтобы убедиться в этом.

Читайте также:
Программа вайбер не работает

Пространства имен NT

Существуют также API- интерфейсы, позволяющие использовать соглашение о пространстве имен NT, но диспетчер объектов Windows в большинстве случаев делает это ненужным. Для иллюстрации полезно просматривать пространства имен Windows в браузере системных объектов с помощью средства Windows Sysinternals WinObj . При запуске этого средства отображается пространство имен 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 формата «DeviceXxx».

С добавлением поддержки нескольких пользователей через службы терминалов и виртуальные машины стало еще больше необходимо виртуализировать корневое устройство на уровне системы в пространстве имен Win32. Для этого в пространство имен Win32 добавлена символьная ссылка с именем GLOBALROOT, которая отображается в подкаталоге Global??» средства браузера WinObj, описанного ранее, и доступ к нему можно получить по пути \?GLOBALROOT. Этот префикс гарантирует, что следующий путь выглядит в истинном корневом пути диспетчера системных объектов, а не в зависим от сеанса пути.

Источник: learn.microsoft.com

5.1. Имена файлов

Файл – основная единица хранения данных в компьютере. Часто файлы разделяют на две категории — текстовые и двоичные. Текстовые файлы предназначены для чтения человеком. Они состоят из строк символов. В текстовых файлах хранятся тексты программ, командных файлов MS DOS и т.д.

Файлы, не являющиеся текстовыми, называются двоичными.

Текстовый файл, содержащий только символы с кодами до 127 (т.е. не содержащий русских букв и псевдографических символов), называется ASCII-файлом.

Каждый файл имеет уникальное имя, которое указывает какую информацию он содержит. ОС управляет всеми файлами при помощи файловой системы. Одной из самых распространенных файловых систем является файловая система FAT(FileAllocationTable).

Среди типов файлов можно выделить:

  • стандартные;
  • используемые конкретными программами;
  • общепринятые;
  • произвольные.
  • COM,EXE– программные или исполняемые, если набрать имя такого файла в командной строке и нажать , то будет выполнена программа, представляемая данным файлом.
  • BAT– командные, это текстовые файлы используемые для выполнения нескольких команд. запустить их на выполнение можно также как и выполняемые.
  • BIN– двоичный файл, используется совместно с программным файлом.
  • SYS–загружаемые драйверы устройств.
  • TXT– текстовые файлы, содержат неформатированный текст, как правило, в кодировкеASCII.
  • HLP– файл помощи.
  • BAK– предыдущая (резервная) версия файла..
  • TMP– временный файл.
  • OBJ– объектный модуль, создаваемый компилятором.
  • BMP,GIF,JPG,WMF,TIF,PCX– файлы компьютерной графики.
  • DOC- документWORD.
  • HTM– гипертекстовый документ.
  • файлы исходных текстов программ на языках программирования PAS,CPP,BAS.
  • DBF– файлы баз данных.

5.2. Каталоги

  • Корневой каталог – один из базовых элементов файловой системы. Корневой каталог не имеет имени. Для его представления в командной строке используется знак . В корневом каталоге хранятся сведения о файлах и каталогах диска.
  • * — любая последовательность символов, используется для представления целого слова или группы символов;
  • ? – любой единственный символ.

Источник: studfile.net

Файл

Файл (англ. file — папка, скоросшиватель) — концепция в вычислительной технике: сущность, позволяющая получить доступ к какому-либо ресурсу вычислительной системы и обладающая рядом признаков:

  • фиксированное имя (последовательность символов, число или что-то иное, однозначно характеризующее файл)
  • определенное логическое представление и соответствующие ему операции чтения/записи

Может быть любой — от последовательности бит до базы данных с произвольной организацией или любым промежуточным вариантом. Первому случаю соответствуют операции чтения/записи потока и/или массива (то есть последовательные или с доступом по индексу), второму — команды СУБД. Промежуточные варианты — чтение и разбор всевозможных форматов файлов.

В отличие от переменной, файл (в частности, его имя) имеет смысл вне конкретной программы. Работа с файлами — по крайней мере, в «простейшем» представлении — реализуется средствами операционных систем, а до их появления реализовывалась их предшественниками — мониторами и библиотеками подпрограмм.

Ресурсами, доступными через файлы, в принципе, может быть что угодно, представимое в цифровом виде. Чаще всего в их перечень входят:

  • области данных (необязательно на диске)
  • устройства (как физические, так и виртуальные)
  • потоки данных (в частности, вход или выход другого процесса)
  • сетевые ресурсы
  • объекты операционной системы

Файлы первого типа исторически возникли первыми и распространены наиболее широко, поэтому часто «файлом» называют и область данных, соответствующую имени. Так как файл в разных операционных системах обладает различным набором атрибутов, свойств и методов доступа, формулировки универсального определения, которое бы учитывало все особенности, сформулировано не было.

Файловая система

Основная статья: файловая система

По мере развития вычислительной техники файлов в системах становилось все больше. Для удобства работы с ними их, как и другие данные, стали организовывать в структуры (тогда же появились символьные имена). Вначале это был простой массив, «привязанный» к конкретному носителю информации. В настоящее время наибольшее распространение получила древовидная организация с возможностью монтирования и вставки дополнительных связей (т. е. ссылок). Соответственно, имя файла приобрело характер пути к файлу: перечисление узлов дерева файловой системы, которые нужно пройти, чтобы до него добраться.

Файл как объект API операционной системы

Операционная система предоставляет приложениям набор функций и структур для работы с файлами. Возможности операционной системы накладывают дополнительные ограничения на ограничения файловой системы. С точки зрения Application Programming Interface (API) файл — объект, по отношению к которому могут быть применены функции этого API. На уровне API уже не существенно, существует ли файл как объект файловой системы или является, например, устройством ввода/вывода.

Свойства файла

В зависимости от файловой системы, файл может обладать различным набором свойств.

Имя файла

В большинстве файловых систем имя файла используется для указания к какому именно файлу производится обращение. В различных файловых системах ограничения на имя файла сильно различаются:

  • В FAT16 и FAT12 размер имени файла ограничен 8 символами (3 символа расширения).
  • В VFAT ограничение 255 байт.
  • В FAT32, HPFS имя файла ограниченно 255 символами
  • В NTFS имя ограничено 254 символами Unicode
  • В ext2/ext3 ограничение 255 байт.

Помимо ограничений файловой системы, интерфейсы операционной системы дополнительно ограничивают набор символов, который допустим при работе с файлами.

  • Для MS-DOS в имени файла допустимы только заглавные буквы, цифры. Не допустим пробел, знак вопроса, звёздочка, символы больше/меньше, символ вертикальной черты. [1] . При вызове системных функций именами файлов в нижнем или смешанном регистре, они приводятся к верхнему регистру.
  • Для Microsoft Windows в имени файла разрешены заглавные и строчные буквы, цифры, некоторые знаки препинания, пробел. Запрещены символы «>», «
  • Для GNU/Linux (с учётом возможности маскировки) разрешены все символы, кроме «/» и нулевого байта.
Читайте также:
Программа усиления звука в видео

Большинство операционных систем требуют уникальности имени файла в одном каталоге, хотя некоторые системы допускают файлы с одинаковыми именами (например, при работе с ленточными накопителями).

Расширение имени файла

Основная статья: расширение имени файла

Расширение имени файла (часто расширение файла или расширение) как самостоятельный атрибут файла существовал в файловых системах FAT16, FAT12, и использовался для определения типа файла. В остальных файловых системах расширение — условность, часть имени, отделённая самой правой точкой в имени.

Атрибуты

В некоторых файловых системах предусмотрены атрибуты (обычно это бинарное значение «да»/«нет», кодируемое одним битом). Практически атрибуты не влияют на возможность доступа к файлам, для этого в некоторых файловых системах существуют права доступа.

Название атрибутапереводзначениефайловые системыоперационные системы
READ ONLY только для чтения в файл запрещено писать FAT32, FAT12, FAT16, NTFS, HPFS, VFAT DOS, OS/2, Windows
SYSTEM системный критический для работы операционной системы файл FAT32, FAT12, FAT16, NTFS, HPFS, VFAT DOS, OS/2, Windows
HIDDEN скрытый файл скрывается от показа, пока явно не сказано обратное FAT32, FAT12, FAT16, NTFS, HPFS, VFAT DOS, OS/2, Windows
ARCHIVE архивный(требующий архивации) файл изменён после резервного копирования или не был скопирован программами резервного копирования FAT32, FAT12, FAT16, NTFS, HPFS, VFAT DOS, OS/2, Windows

Время

Для файла могут быть определены следующие временные метки:

  • Время создания
  • Время модификации
  • Время последнего доступа

Владелец и группа файла

В некоторых файловых системах предусмотрено указание на владельца файла, и группу владельца.

Права доступа

В некоторых файловых системах предусмотрена возможность для ограничения доступа пользователей к содержимому файла

В UNIX-подобных операционных системах для файлов обычно выделяют три типа прав:

  • Право на запись
  • Право на чтение
  • Право на выполнение

Каждое право задаётся раздельно для владельца, для группы и для всех остальных. ACL позволяют расширить этот список.

В операционных системах Windows NT при работе с файловой системой NTFS права доступа задаются явно для пользователей или групп (или наследуются от вышестоящих объектов). Права в себя включают:

  • Право на чтение
  • Право на запись
  • Право на исполнение
  • Право на удаление
  • Право на смену атрибутов и владельца
  • Право на создание, удаление подпапок (для папок)
  • Право на чтение прав доступа

Каждое право может быть задано как разрешением, так и запретом, запрет имеет больший приоритет, чем разрешение.

Операции с файлом

Условно можно выделить два типа операций с файлом — связанные с его открытием, и выполняющиеся без его открытия. Операции первого типа обычно служат для чтения/записи информации или подготовки к записи/чтению. Операции второго типа выполняются с файлом как с «объектом» файловой системы, в котором файл является мельчайшей единицей структурирования.

Операции, связанные с открытием файла

В зависимости от операционной системы те или иные операции могут отсутствовать.

Обычно выделяют дополнительные сущности, связанные с работой с файлом:

  • хэндлер файла, или дескриптор (описатель). При открытии файла (в случае, если это возможно), операционная система возвращает число (или указатель на структуру), с помощью которого выполняются все остальные файловые операции. По их завершению файл закрывается, а хэндлер теряет смысл.
  • файловый указатель. Число, являющееся смещением относительно нулевого байта в файле. Обычно по этому адресу осуществляется чтение/запись, в случае, если вызов операции чтения/записи не предусматривает указание адреса. При выполнении операций чтения/записи файловый указатель смещается на число прочитанных (записанных) байт. Последовательный вызов операций чтения таким образом позволяет прочитать весь файл не заботясь о его размере.
  • файловый буфер. Операционная система (и/или библиотека языка программирования) осуществляет кеширование файловых операций в специальном буфере (участке памяти). При закрытии файла буфер сбрасывается.
  • режим доступа. В зависимости от потребностей программы, файл может быть открыт на чтение и/или запись. Кроме того, некоторые операционные системы (и/или библиотеки) предусматривают режим работы с текстовыми файлами. Режим обычно указывается при открытии файла.
  • режим общего доступа. В случае многозадачной операционной системы возможна ситуация, когда несколько программ одновременно хотят открыть файл на запись и/или чтение. Для регуляции этого существуют режимы общего доступа, указывающие на возможность осуществления совместного доступа к файлу (например, файл в который производится запись может быть открыт для чтения другими программами — это стандартный режим работы log-файлов).
  • Открытие файла (обычно в качестве параметров передается имя файла, режим доступа и режим совместного доступа, а в качестве значения выступает файловый хэндлер или дескриптор), кроме того обычно имеется возможность в случае открытия на запись указать на то, должен ли размер файла изменяться на нулевой.
  • Закрытие файла. В качестве аргумента выступает значение, полученное при открытии файла. При закрытии все файловые буферы сбрасываются.
  • Запись — в файл помещаются данные.
  • Чтение — данные из файла помещаются в область памяти.
  • Перемещение указателя — указатель перемещается на указанное число байт вперёд/назад или перемещается по указанному смещению относительно начала/конца. Не все файлы позволяют выполнение этой операции (например, файл на ленточном накопителе может не «уметь» перематываться назад).
  • Сброс буферов — содержимое файловых буферов с незаписанной в файл информацией записывается. Используется обычно для указания на завершение записи логического блока (для сохранения данных в файле на случай сбоя).
  • Получение текущего значения файлового указателя.

Операции, не связанные с открытием файла

Операции, не требующие открытия файла оперируют с его «внешними» признаками — размером, именем, положением в дереве каталогов. При таких операциях невозможно получить доступ к содержимому файла, файл является минимальной единицей деления информации.

В зависимости от файловой системы, носителя информации, операционной системой часть операций может быть недоступна.

  • Удаление файла
  • Переименование файла
  • Копирование файла
  • Перенос файла на другую файловую систему/носитель информации
  • Создание симлинка или хардлинка
  • Получение или изменение атрибутов файла

Типы файлов

В различных операционных системах и/или файловых системах могут быть реализованы различные типы файлов; кроме того, реализация различных типов может различаться.

  • «Обыкновенный файл» — файл, позволяющий операции чтения, записи, перемещения внутри файла
  • Директория (англ. directory — алфавитный справочник, часто переводится как каталог) — файл, содержащий в себе записи о других файлах. Директории могут содержать записи о других директориях, образуя древовидную структуру.
  • Жёсткая ссылка (англ. hardlink, часто используется калька хардлинк) — в общем случае одна и та же область информации может иметь несколько имён, указывающих на одни и те же данные. В этом случае такие имена называют жёсткими ссылками (хардлинками). В общем случае после создания хардлинка сказать где «настоящий» файл а где хардлинк невозможно, так как имена равноправны; а область данных существует до тех пор пока существует хотя бы одно из имён. Хардлинки возможны только на одном физическом носителе.
  • Символьная ссылка (cимлинк, софтлинк) — файл, содержащий в себе ссылку на другой файл или директорию. Может ссылаться на любой элемент файловой системы, в том числе, и расположенный на другом физическом носителе.

Источник: www.tadviser.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru