Файлы

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

На жёстком диске может находиться множество файлов. Чтобы избежать путаницы, каждый файл, расположенный на диске, имеет своё имя, а также место расположения. Любой файл можно расположить в папке.

Работа с файлами реализуется средствами операционных систем. Многие операционные системы приравнивают к файлам и обрабатывают сходным образом и другие ресурсы:

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

Плакат "Файлы и файловые структуры"

История

Слово file впервые применено к компьютерному хранилищу в 1950 году. Реклама памяти на запоминающих ЭЛТ фирмы RCA в журнале «Popular Science» гласила:

« …результаты бесчисленных вычислений можно держать «в картотеке» (on file) и получать снова. Эта «картотека» теперь существует в запоминающей трубке, разработанной в лабораториях RCA. Она электрически сохраняет цифры, отправленные в вычислительную машину, и держит их в хранилище, заодно запоминая новые — ускоряя интеллектуальные решения в лабиринтах математики. »

В 1952 году слово file отнесли к колоде перфокарт. Поначалу словом file называли само устройство памяти, а не его содержимое.

Имена файлов в CTTS состояли из двух частей, «основного имени» и «дополнительного имени» (последнее существует и поныне как расширение имени файла).

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

Имя файла

Имя файла — строка символов, однозначно определяющая файл в некотором пространстве имён файловой системы (ФС), обычно называемом каталогом, директорией или папкой. Имена файлов строятся по правилам, принятым в той или иной файловой и операционной системах.

Имя файла является частью полного имени файла, также называемого полным или абсолютным путём к файлу. Полное имя может включать следующие компоненты:

  • протокол или способ доступа (http, ftp, file и т. п.);
  • имя или адрес компьютера, узла сети (wikipedia.org, 207.142.131.206,\\MYCOMPUTER, SYS: и т. п.);
  • устройство хранения, диск (C:, /, SYSLIB и т. п.);
  • путь к каталогу (/usr/bin, \TEMP, [USR.LIB.SRC] и т. п.);
  • собственно имя файла, которое может содержать его расширение (.txt, .exe, .COM и т. п.);
  • версия или номер ревизии.

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

Имя файла состоит из двух частей, разделенных точкой:

  • Название (до точки, часто также называют именем);
  • Расширение (необязательная часть).

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

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

Вид расширения
Тип (формат) файла
Программа
 .exe
Исполняемый файл — файлы, содержащие готовые к исполнению программы
Любая рабочая программа Windows, DOS, Symbian, OS/2
.msi
Инсталлятор программ — файл, который устанавливает программы
Пакет программ, требующих установки
.doc(docx)
Документ Word (Word 2007 и выше)
MS Word, одно из приложений Office
.xls(xlsx)
Файл таблиц Excel (Excel 2007 и выше)
MS Excel, одно из приложений Office
.txt
Текстовый файл простого формата (документ)
Блокнот
.ppt(pptx)
Файл презентаций PowerPoint
MS PowerPoint, одно из приложений Office
.accdb
База данных Access
MS Access, одно из приложений Office
.mp3, .flac, .ape, .ogg, .waw, .ac3, .wma, .m4a, .aac и другие форматы
Звуковой (цифровой) файл
Любой аудио-плеер (не только Windows)
.bmp, .jpg(jpeg), .png, .gif, .tiff, .ico, .raw
Файл изображения
Стандартные менеджеры изображений, иногда специальные программы для конкретного формата
.avi, .wmw, .mkv, .3gp, .flv, .mpeg, .mp4, .mov, .vob
Видео файлы
Различные плееры
.swf, .flv
Флеш- или видеофайлы в Интернете
Воспроизводятся любым браузером с установленным flash-проигрывателем
.rar, .zip, .7z, .tar, .gzip, .gz, .jar
Архивный контейнер
В большинстве случает хватает WinRar и 7-Zip для работы со всеми популярными архивами
.html, .htm, .php
Веб-страница
Браузеры
.djvu
Файл сжатых изображений. Используется для точной передачи информации (сканированные книги, исторические документы) без потери данных
Любая программа для чтения djvu-файлов. WinDJView, DJVUReader и т.д.
.pdf
Файл электронного документа, подходит для передачи любой полиграфической продукции и прочего
Adobe Reader, Foxit PDF Reader и прочие

Запрещенные символы в именах файлов

  • \ - разделитель подкаталогов
  • / - разделитель ключей командного интерпретатора
  • : - отделяет букву диска или имя альтернативного потока данных
  • * - заменяющий символ (маска "любое количество любых символов")
  • ? - заменяющий символ (маска "один любой символ")
  • " - используется для указания путей, содержащих пробелы
  • < - перенаправление ввода
  • > - перенаправление вывода
  • | - обозначает конвейер.

Основные атрибуты файла

Название атрибута перевод значение файловые системы операционные системы
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-like
SGID Установка группового ID выполнение программы от имени группы (для каталогов: любой файл созданный в каталоге с установленным SGID, получит заданную группу-владельца) ext2 Unix-like
Sticky Bit липкий бит изначально предписывал ядру не выгружать завершившуюся программу из памяти сразу, а лишь спустя некоторое время, чтобы избежать постоянной загрузки с диска наиболее часто используемых программ, в настоящее время в разных ОС используется по-разному ext2 Unix-like

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

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

Систему хранения файлов можно представить, как хранение книг в библиотеке:

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

Архивация файлов

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

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

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

Существуют различные архиваторы файлов (ZIP, 7-ZIP, RAR).

Каталог (файловая система)

Каталог (англ. directory — директория, справочник, указатель) — объект в файловой системе, упрощающий организацию файлов. Типичная файловая система содержит большое количество файлов, и каталоги помогают упорядочить её путём их группировки.

В информатике используется следующее определение: каталог — поименованная совокупность байтов на носителе информации, содержащая название подкаталогов и файлов.

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

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

Корневая папка содержит вложенные папки 1-го уровня (например, папка «7 класс»), в свою очередь, каждая из них может содержать вложенные папки 2-го уровня (например, папка «7 класс» содержит папки «Домашнее задание» и «Работа на уроке»).

Корневой каталог

Каталог, прямо или косвенно включающий в себя все прочие каталоги и файлы файловой системы, называется корневым. В Unix-подобных ОС он обозначается символом / (дробь, слеш), в DOS и Windows исторически используется символ \ (обратный слеш), но с некоторого времени поддерживается и /.

Текущий каталог

Текущим называется каталог, с которым работает ОС, если ей не указать другого каталога. Он обозначается точкой (.).

Для смены текущего каталога на другой используется команда cd; без указания целевого каталога она возвращает текущий.

Родительский каталог

Родительским каталогом называется каталог, в котором находится текущий. Он обозначается двумя точками (..).

Иерархия каталогов в Windows

Каталог, который не является подкаталогом ни одного другого каталога, называется корневым. Это значит, что этот каталог находится на самом верхнем уровне иерархии всех каталогов. В Windows каждый из дисков имеет свой корневой каталог (C:\D:\ и т. д).

Каталоги в Windows бывают системные (служебные, созданные ОС) и пользовательские (созданные пользователем).

Пример системных каталогов: «Рабочий стол», «Корзина», «Сетевое окружение», «Панель управления», каталоги логических дисков и т. п.

Логическая структура носителей информации

Логическая структура носителя информации в распространённой файловой системе FAT имеет следующие разделы:
1. Загрузочный кластер;
2. Таблицу размещения файлов, которая содержит в своих ячейках цепочку номеров кластеров для каждого файла;
3. Корневой каталог;
4. Файлы.

Минимальным адресуемым элементом носителя информации является кластер, который может включать в себя несколько секторов (объём сектора составляет 512 байтов).

Размер кластера (от 512 байт до 64 Кбайт) зависит от типа используемой системы.

Кластеры нумеруются в линейной последовательности.

Файловая система организует кластеры в файлы и каталоги. Файловая система отслеживает, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.
При записи файлов будет занято всегда целое количество кластеров, соответственно, минимальный размер файла равен размеру одного кластера, а максимальный соответствует общему количеству кластеров на диске.
Описание файловых систем FAT12, FAT16, FAT32, NTFS, ext3 и ReiserFS, HFS, CDFS, UDF.