Текстовый файл

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Пиктограммное описание текстового файла с CSV-данными

Те́кстовый файл — компьютерный файл, содержащий текстовые данные, как правило, организованные в виде строк.

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

В отличие от термина «текстовый формат», характеризующего содержимое данных, термин «текстовый файл» относится к файлу и характеризует его как контейнер, хранящий такие данные.

Описание[править | править вики-текст]

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

Текстовой файл может содержать как форматированный, так и неформатированный текст.

Преимущества и недостатки[править | править вики-текст]

Преимущества:

  • Универсальность — текстовый файл может быть прочитан (так или иначе) на любой системе или ОС, особенно если речь идёт об однобайтных кодировках вроде ASCII, которые не подвержены проблеме, характерной для других форматов файлов — для них не важна разница в порядке байтов или длине машинного слова на разных платформах.
  • Устойчивость — каждое слово и символ в таком файле самодостаточны и, если случится повреждение байтов в таком файле, то обычно можно восстановить данные или продолжить обработку остального содержимого, в то время как у сжатых или двоичных файлов повреждение нескольких байтов может сделать файл совершенно невосстановимым. Многие системы управления версиями рассчитаны на текстовые файлы и с двоичными файлами могут работать только как с единым целым.
  • Формат текстового файла крайне прост и его можно изменять текстовым редактором — программой, входящей в комплект практически любой ОС.

Недостатки:

  • У больших несжатых текстовых файлов низкая информационная энтропия — эти файлы занимают больше места, нежели минимально необходимо. Хотя эта избыточность и определяет повышенную устойчивость к сбоям в каналах передачи данных и при получении данных с носителей, например, с магнитной ленты.
  • Некоторые операции с текстовыми файлами неэффективны. Например, если в файле встретится число, вычислительная система до начала операций с ним должна будет перевести его в свой внутренний формат, применив сравнительно сложную процедуру конвертации числа; чтобы перейти на 1000-ю строку, требуется считать 999 строк, идущих до неё; сложно заменить одну строку другой и т. д. Поэтому при работе с большими объёмами данных текстовые файлы применяют только как промежуточный формат, обеспечивающий интероперабельность.

Форматы, основанные на текстовых файлах[править | править вики-текст]

В силу своей простоты текстовые файлы нередко используются для хранения служебной информации (например, логов): так как операция добавления в конец текстового файла новых данных не требует сколь-нибудь значительных вычислительных ресурсов независимо от уже имеющегося объёма файла и вида добавляемых текстовых данных, ведение текстовых лог-файлов обычно происходит эффективно и незаметно для пользователя и для других приложений (вплоть до исчерпания дискового пространства). Текстовый формат служит основой для многих более специализированных форматов (например, .ini, SGML, HTML, XML, TeX, исходных текстов языков программирования).

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

Расширения имён файлов[править | править вики-текст]

В DOS и Windows для файлов с неформатированным текстом обычно используется расширение .txt. Тем не менее, текстовыми могут являться файлы с любым другим расширением или без оного. Например, исходные коды программ обычно хранятся в файлах с расширениями, соответствующими языку программирования, на котором написаны программы (.bas, .pas, .c).

Форматированный текст (текст с разметкой) обычно хранится в файлах с расширением, соответствующим формату или языку разметки — .rtf, .htm, .html.

Кодировки[править | править вики-текст]

8-битный текст[править | править вики-текст]

Исторически для кодирования текстовых файлов применялись 7-битный набор символов ASCII, а также 8-битные EBCDIC и различные расширения ASCII. В 8-битных кодовых страницах общепринято использовать в первой половине кодовой таблицы символы, соответствующие ASCII.

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

Unicode в текстовых файлах[править | править вики-текст]

Применение Unicode в текстовых файлах хотя в основном решает «проблему кодировок» и стандартизирует употребление управляющих символов, но создаёт свои проблемы. В большинстве современных систем неделимой единицей информации в потоке данных является байт (8 бит), которых для кодирования одного символа из Юникода требуется несколько. В качестве решения применяются несовместимые между собой системы UTF-8 и две версии UTF-16 (UTF-16LE и UTF-16BE с противоположным порядком байтов). Иногда в начало файла добавляют специальный символ-маркер (U+FEFF[1]), позволяющий распознать формат однозначно. UTF-8 имеет преимущество обратной совместимости с ASCII, однако программная обработка текста в UTF-8 усложняется непостоянным размером символа. Также, тексты в Юникоде отличаются ещё большей избыточностью, нежели 8-битные.

Управляющие символы[править | править вики-текст]

Различные операционные системы придерживаются своего представления перевода строки и конца файла. В UNIX перевод строки состоит из одного символа LF (код 0xA), в Mac OS — из символа CR (код 0xD), а в DOS и Windows перевод строки кодируется последовательностью двух символов: CR и LF.

Помимо названных, в текстовых файлах применяются такие символы, как табуляция (код 9) и перевод страницы (код 0xC)[источник не указан 456 дней].

См. также[править | править вики-текст]

Примечания[править | править вики-текст]