Текстовый файл
- 1 year ago
- 0
- 0
Файл ( англ. file) — именованная область данных на носителе информации , используемая как базовый объект взаимодействия с данными в операционных системах .
Работа с файлами реализуется как правило с применением файловых систем , обеспечивающих организацию работы с файлами и абстракцию над носителями информации . Обычно выделяют исполняемые файлы (программы) и собственно файлы данных (например, текстовые файлы или медиаконтейнеры ). Формат файла — способ организации данных внутри файла, позволяющий записывать в него информацию в соответствии с её смыслом и интерпретировать записанное. Многие операционные системы приравнивают к файлам и обрабатывают сходным образом и другие ресурсы; наиболее широкое использование понятия файла характерно для Unix-подобных операционных систем , реализующих концепцию ( англ. ). В них файлами считаются не только области данных на томе , но и, в частности, физические устройства ( порты или принтеры ), виртуальные устройства ( /dev/null , /dev/random , /dev/urandom и другие), потоки данных (например, именованные каналы ), сетевые ресурсы, сокеты .
Слово англ. file происходит от лат. filum («нить, струна»). Слово англ. file впервые применено к компьютерной системе хранения в 1950 году. Реклама памяти на запоминающих ЭЛТ фирмы RCA в журнале Popular Science гласила:
…результаты бесчисленных вычислений можно держать «в картотеке» ( англ. on file) и получать снова. Эта «картотека» теперь существует в запоминающей трубке, разработанной в лабораториях RCA. Она электрически сохраняет цифры, отправленные в вычислительную машину, и держит их в хранилище, заодно запоминая новые — ускоряя интеллектуальные решения в лабиринтах математики.
В 1952 году слово file отнесли к колоде перфокарт . Поначалу словом file называли само устройство памяти, а не его содержимое ( регистровый файл ). Например, диски , использовавшиеся, например, в машине , назывались disk files . Системы наподобие ввели концепцию файловой системы, когда на одном запоминающем устройстве существует несколько виртуальных «устройств памяти», что и дало слову «файл» современное значение. Имена файлов в CTSS состояли из двух частей, «основного имени» и «дополнительного имени» (последнее существует и поныне как расширение имени файла ) .
По мере развития вычислительной техники, файлов в системах становилось всё больше. Для удобства работы с ними, их, как и другие данные, стали организовывать в структуры (тогда же появились символьные имена). Вначале это был простой массив , «привязанный» к конкретному носителю информации. В настоящее время наибольшее распространение получила древовидная организация с возможностью монтирования и вставки дополнительных связей (то есть ссылок). Соответственно, имя файла приобрело характер пути к файлу : перечисление узлов дерева файловой системы, которые нужно пройти, чтобы до него добраться.
Операционная система предоставляет приложениям набор функций и структур для работы с файлами. Возможности операционной системы накладывают дополнительные ограничения на ограничения файловой системы. С точки зрения API файл — объект, по отношению к которому могут быть применены функции этого API. На уровне API уже не существенно, существует ли файл как объект файловой системы или является, например, устройством ввода-вывода.
В зависимости от файловой системы, файл может обладать различным набором свойств.
В большинстве файловых систем имя файла используется для указания, к какому именно файлу производится обращение. В различных файловых системах ограничения на имя файла сильно различаются: в FAT16 и FAT12 размер имени файла ограничен 8.3 знаками (8 на имя и 3 на расширение ); в других системах имя файла ограничено обычно в 255 байт; в NTFS имя ограничено в некоторых ОС 256 символами Unicode (по спецификации — 32 768 символов).
Помимо ограничений файловой системы, интерфейсы операционной системы дополнительно ограничивают набор символов, который допустим при работе с файлами.
Для MS-DOS в имени файла допустимы только заглавные латинские буквы, цифры. Недопустимы пробел, знак вопроса, звёздочка, символы больше и меньше, символ вертикальной черты. При вызове системных функций имена файлов в нижнем или смешанном регистре приводятся к верхнему регистру.
Для
Windows
в имени файла разрешены заглавные и строчные буквы, цифры, некоторые знаки препинания, пробел. Запрещены символы
>
,
<
,
|
,
?
,
*
,
/
,
\
,
:
,
"
.
Для
Linux
(с учётом возможности маскировки) разрешены все символы, кроме
/
и
нуль-символа
.
Большинство операционных систем требуют уникальности имени файла в одном каталоге, хотя некоторые системы допускают файлы с одинаковыми именами (например, при работе с ленточными накопителями).
В некоторых файловых системах можно создавать и использовать файлы без имени. Такие файлы всегда являются временными. Их основные преимущества: при создании не может возникнуть конфликта имён и их нельзя найти в их каталоге по имени. В остальном это полноценные файлы.
Расширение имени файла (часто: расширение файла или расширение) как самостоятельный атрибут файла существует в файловых системах FAT16 , FAT32 , NTFS , используемых операционными системами MS-DOS, DR-DOS, PC DOS, MS Windows и используется для определения типа файла. Оно позволяет системе определить, каким приложением следует открывать данный файл. По умолчанию в операционных системах Windows и Mac OS расширение скрыто от пользователя.
В остальных файловых системах расширение — условность, часть имени, отделённая самой правой точкой в имени (суффикс).
В некоторых файловых системах, таких как NTFS, предусмотрены атрибуты (обычно это бинарное значение «да»/«нет», кодируемое одним битом). Во многих современных операционных системах атрибуты практически не влияют на возможность доступа к файлам, для этого в некоторых операционных и файловых системах существуют .
Название атрибута | Перевод | Значение | Файловые системы | Операционные системы |
---|---|---|---|---|
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 |
SUID | Установка пользовательского ID | выполнение программы от имени владельца | ext2 | Unix-подобные |
SGID | Установка группового ID | выполнение программы от имени группы (для каталогов: любой файл созданный в каталоге с установленным SGID, получит заданную группу-владельца) | ext2 | Unix-подобные |
Sticky Bit | липкий бит | изначально предписывал ядру не выгружать завершившуюся программу из памяти сразу, а лишь спустя некоторое время, чтобы избежать постоянной загрузки с диска наиболее часто используемых программ, в настоящее время в разных ОС используется по-разному | ext2 | Unix-подобные |
Для файла могут быть определены временные метки создания, последней модификации, последнего доступа и другие.
В некоторых файловых системах предусмотрено указание на владельца файла и группу-владельца.
В некоторых файловых системах предусмотрена возможность для ограничения доступа пользователей к содержимому файла. В Unix-подобных операционных системах для файлов ранее обычно выделяли три типа прав: на запись, чтение и выполнение. Каждое право задаётся раздельно для владельца, для группы и для всех остальных. ACL позволяет использовать более детальное разделение и прав, и пользователей.
В операционных системах Windows NT при работе с файловой системой NTFS права доступа задаются явно для пользователей или групп или наследуются от вышестоящих объектов. Права в себя включают право на чтение, запись, исполнение, удаление, смену атрибутов и владельца, создание и удаление подпапок (для папок) и чтение прав доступа и другие как в POSIX. Каждое право может быть задано как разрешением, так и запретом. Запрет имеет больший приоритет, чем разрешение в отличие от POSIX.
Условно можно выделить два типа операций с файлом — связанные с его открытием и выполняющиеся без его открытия. Операции первого типа обычно служат для чтения и записи информации или подготовки к чтению или записи. Операции второго типа выполняются с файлом как с «объектом» файловой системы, в котором файл является наименьшим элементом структурирования.
В зависимости от операционной системы те или иные операции могут отсутствовать.
Обычно выделяют дополнительные сущности, связанные с работой с файлом:
Операции, не требующие открытия файла, оперируют с его «внешними» признаками — размером, именем, положением в . При таких операциях невозможно получить доступ к содержимому файла, файл является минимальной единицей деления информации.
Возможные операции с файлами: создание, удаление, переименование, копирование, перенос на другую файловую систему, создание символьной ссылки или жёсткой ссылки , получение и изменение атрибутов.
В зависимости от файловой системы, носителя информации, операционной системы часть операций может быть недоступна.
По способу организации файлы делятся на файлы с произвольным доступом и файлы с последовательным доступом .
В различных операционных и файловых системах могут быть реализованы различные типы файлов, кроме того, реализация различных типов может различаться.
В операционной системе
Unix
процессы
(обычно находятся в каталоге
/proc
) и устройства (
/dev
) представляются в виде файлов особого типа, что позволяет использовать некоторые файловые операции для манипуляции этими объектами.
В некоторых файловых системах (например, в файловой системе VMS ) файлы имеют версию, что позволяет открывать более старые варианты данного файла. В файловой системе Mac OS ( HFS ) у файлов есть два «потока»: поток данных (где хранится содержимое файла) и поток ресурсов, хранящий информацию о программе, предназначенной для открывания данного файла и, возможно, некоторую информацию для этой программы. В NTFS файл может содержать, кроме основного, сколько угодно именованных потоков.