Те́кстовый файл — компьютерный файл, содержащий текстовые данные, как правило, организованные в виде строк.
Текстовым файлам противопоставляются двоичные файлы, в которых содержатся данные, не рассчитанные на интерпретацию в качестве текста (например, файлы, хранящие закодированные звук или изображение).
В отличие от термина «текстовый формат», характеризующего содержимое данных, термин «текстовый файл» относится к файлу и характеризует его как контейнер, хранящий такие данные.
Содержание |
Текстовый файл представляет из себя последовательность символов (в основном печатных знаков, принадлежащих тому или иному набору символов). Это символы обычно сгруппированы в строки (англ. lines, rows). В современных системах строки разделяются разделителями строк, в прошлом же применялось хранение строк в виде записей постоянной или переменной длины (см.: Перфокарта). Иногда конец текстового файла (особенно если в файловой системе не хранится информация о размере файла) также отмечается одним или более специальными знаками, известными как маркеры конца файла.
Текстовой файл может содержать как форматированный, так и неформатированный текст.
Преимущества:
Недостатки:
В силу своей простоты текстовые файлы нередко используются для хранения служебной информации (например, логов). Текстовый формат служит основой для многих более специализированных форматов (например, .ini, SGML, HTML, XML, TeX, исходных текстов языков программирования).
В текстовом файле текст может храниться как в неформатированном, так и форматированном или размеченном виде (например, Rich Text Format, HTML), где к каждому символу может быть применено форматирование (шрифт, начертание, размер и т. п.).
В DOS и Windows для файлов с неформатированным текстом обычно используется расширение .txt. Тем не менее, текстовыми могут являться файлы с любым другим расширением или без оного. Например, исходные коды программ обычно хранятся в файлах с расширениями, соответствующими языку программирования, на котором написаны программы (.bas, .pas, .c).
Форматированный тест (текст с разметкой) обычно хранится в файлах с расширением, соответствующим формату или языку разметки — .rtf, .htm, .html.
Исторически для кодирования текстовых файлов применялись 7-битный набор символов ASCII, а также 8-битные EBCDIC и различные расширения ASCII. В 8-битных кодовых страницах общепринято использовать в первой половине кодовой таблицы символы, соответствующие ASCII.
Преимуществом 8-битного представления текста является программная простота и независимость от проблемы порядка байтов или длины машинного слова на разных платформах. Недостаток — большое количество различных стандартов, что может приводить к несовместимости.
Применение Unicode в текстовых файлах хотя в основном решает «проблему кодировок» и стандартизирует употребление управляющих символов, но создаёт свои проблемы. В большинстве современных систем неделимой единицей информации в потоке данных является байт (8 бит), которых для кодирования одного символа из Юникода требуется несколько. В качестве решения применяются несовместимые между собой системы UTF-8 и две версии UTF-16 (UTF-16LE и UTF-16BE с противоположным порядком байтов). Иногда в начало файла добавляют специальный символ-маркер (U+FEFF[1]), позволяющий распознать формат однозначно. UTF-8 имеет преимущество обратной совместимости с ASCII, однако программная обработка текста в UTF-8 усложняется непостоянным размером символа. Также, тексты в Юникоде отличаются ещё большей избыточностью, нежели 8-битные.
Различные операционные системы придерживаются своего представления перевода строки и конца файла. В UNIX перевод строки состоит из одного символа LF (код 10), в Mac OS — из символа CR (код 13), а в DOS и Windows перевод строки кодируется последовательностью двух символов: CR и LF.
Помимо названных, в текстовых файлах применяются такие символы, как табуляция (код 9) и перевод страницы (код 12).