Текстовый файл
Материал из Википедии — свободной энциклопедии
Те́кстовый файл — разновидность файла, содержащая текстовые данные, как правило организованные в виде строк. Текстовый файл, как и прочие файлы, хранится в файловой системе.
В отличие от термина «текстовый формат», характеризующего содержимое данных, термин «текстовый файл» относится к контейнеру, хранящему эти данные. Текстовый файл может содержать не только чистый текст, но и производные форматы — к примеру, HTML-текст.
Текстовым файлам противопоставляются двоичные (бинарные) файлы, в которых информация организована по иным принципам.
Содержание |
[править] Организация текстового файла
Текстовый файл представляет из себя последовательность символов (принадлежащих некому набору символов). Символы сгруппированы в строки (англ. lines, rows). В современных системах строки разделяются переводом строки, хотя в прошлом применялось хранение строк в виде записей постоянной или переменной длины.
Иногда конец текстового файла, особенно если в файловой системе не хранится информация о размере файла, также отмечается одним или более специальными знаками, известными как маркеры конца файла.
О применяемых символах см. #Управляющие символы.
[править] Преимущества и недостатки
[править] Преимущества
Формат текстового файла крайне прост, и его можно изменять текстовым редактором — стандартной программой, присутствующей во всех ОС.
Текстовые файлы, особенно если речь идёт об однобайтных кодировках вроде ASCII, не подвержены многим проблемам, характерным для других форматов файлов. Так, для них не важна разница в порядке байтов или длине машинного слова на разных платформах.
Более того, если повреждение данных (англ.) случится в текстовом файле, в этом случае обычно легче восстановиться и продолжить обработку остального содержимого[источник не указан 57 дней].
[править] Недостатки
Недостатком текстовых файлов является их низкая информационная энтропия[источник не указан 57 дней] — эти файлы занимают больше места, нежели минимально необходимо.
Некоторые операции с текстовыми файлами чрезвычайно неэффективны. Например, если в файле встретится число, машина должна будет перевести его в свой внутренний формат, вызвав (сравнительно) сложную процедуру конвертации числа. Чтобы перейти на 1000-ю строку, требуется считать 999 строк, идущих до неё. Сложно заменить одну строку другой, и т. д. Поэтому при работе с большими объёмами данных текстовые файлы применяют только как промежуточный формат, обеспечивающий интероперабельность.
[править] Форматы, основанные на текстовых файлах
В силу своей простоты текстовые файлы нередко используются для хранения информации (пример, для логов). Текстовый формат служит основой для многих более специализированных форматов. Например: ini, SGML (а также HTML, XML), TeX, исходные тексты языков программирования…
[править] Кодировки
[править] 8-битный текст
Исторически для кодирования текстовых файлов применялись 7-битный набор символов ASCII, а также 8-битные EBCDIC и различные расширения ASCII. В настоящее время в 8-битных кодовых страницах общепринято использовать ASCII в первой половине кодовой таблицы.
Преимуществом 8-битного представления текста является программная простота и независимость от проблем порядка байтов или длины машинного слова на разных платформах. Недостаток — многочисленные несовместимости, большое количество различных стандартов.
[править] Управляющие символы
Различные операционные системы придерживаются своего представления перевода строки и конца файла. В UNIX перевод строки состоит из одного символа LF (0x0A), в Mac OS — из символа CR (0x0D), а в DOS и Microsoft Windows перевод строки кодируется последовательностью двух символов CR LF. В DOS и Microsoft Windows конец файла кодируется символом 0x1A, а в UNIX символ конца файла не употребляется.
Помимо названных, в текстовых файлах применяются такие символы как табуляция (0x09) и перевод страницы (0x0C).
[править] Unicode в текстовых файлах
Применение Unicode в текстовых файлах, хотя в основном решает «проблему кодировок» и стандартизирует употребление управляющих символов, но создаёт свои проблемы. В большинстве современных систем неделимой единицей информации в потоке данных является байт (8 бит), которых для кодирования одного символа из Юникода требуется несколько. В качестве решения применяются несовместимые между собой системы UTF-8 и две версии UTF-16 (UTF-16LE и UTF-16BE с противоположным порядком байтов). Иногда в начало файла добавляют специальный символ-маркер (U+FEFF[1]), позволяющий распознать формат однозначно. UTF-8 имеет преимущество обратной совместимости с ASCII, однако программная обработка текста в UTF-8 усложняется непостоянным размером символа. Также тексты в Юникоде отличаются существенно большей избыточностью, нежели 8-битные.
[править] Расширения имён файлов
В MS-DOS и Microsoft Windows для текстовых файлов нередко используется расширение «.txt». Тем не менее, текстовыми могут являться файлы с любым другим расширением или без оного. Например, исходные коды программ обычно хранятся в файлах с расширениями, соответствующими языку программирования, на котором написаны программы.

