Как выглядит текстовый файл. Форматы текстовых файлов

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

Расширение текстового файла: что это такое?

Начнем с того, что, как правило, большинство файлов такого типа имеют расширение в виде трех литер после разделителя (точки). Самый простой и наиболее часто встречающийся тип - это файлы с расширением.txt, открываемые в тех же системах Windows при помощи стандартного «Блокнота».

Однако, несмотря на общепринятые правила, расширения файлов текстовых документов могут содержать не три литеры, а больше (их число может достигать двенадцати, но не больше), например, файлы электронных книг.djvu. Кроме того, в расширении могут присутствовать цифры.

Что дает нам рассмотрение классификации текстового файла (документа) в плане их идентификации? А то, что один взгляд позволяет моментально решить важный вопрос: какое расширение имеют текстовые файлы, такова и программа, сопоставленная им для открытия или редактирования. Тут же во многих случаях почти всегда можно определить изначальное приложение, в котором такой файл был создан.

Однако не стоит забывать, что сегодня можно встретить достаточно большое число файлов с одинаковыми расширениями, но созданные в других приложениях или сопоставленные разным программам. Казалось бы, обычный файл с расширением.doc (.docx) изначально соответствует текстовому редактору Microsoft Word. Но ведь открыть его или сохранить в таком виде можно и в другом даже на «яблочных» компьютерах. Сюда же можно отнести и, так сказать, смешанный тип - файлы формата.pdf, содержащие уже не только текст, но и графику. Но ведь и документы Word могут содержать вставленные изображения.

Именно это и служит показателем того, что расширение текстового файла свидетельствует об универсальности самого формата, который является наиболее «читабельным» независимо даже от применяемой операционной системы. То же самое касается и любого типа.

Типы расширения файлов: текстовые

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

Да, конечно, универсальность таких документов не вызывает сомнений, особенно если в них используется простейшая Но иногда проблема может заключаться в том, что не всякая кодировка поддерживается определенной системой или программой. Именно поэтому на экране вместо привычных букв появляется набор символов.

Что же касается разновидностей текстовых файлов, их все и не перечислишь. Наиболее распространенными являются следующие: .txt, .doc, .tex, .text, .pdf, .log, .apt, .ttf, .err, .sub, .djvu, .odt, .rtf и многие другие. Этот список можно продолжать до бесконечности.

Что самое интересное, многим файлам такого типа в системе отводится разная роль. К примеру, кроме обычного файла субтитров.sub, за их просмотр при открытии видео может отвечать обычный текстовый документ.txt, и в этом отношении многие форматы взаимозаменяемы.

Заметьте, даже исполняемые файлы могут иметь текст в качестве содержимого. Простейший пример - файл.bat, создаваемый в обычном «Блокноте» и содержащий текст в виде набора команд. При запуске происходит выполнение команд, а для редактирования используется меню «Открыть с помощью…», если изначально этому процессу не сопоставлено другое действие.

Подобная ситуация наблюдается и с документами, использующими разметку или языки программирования, скажем, файлы.html, .htm, .xml и т.д. Даже веб-страницы можно во многих редакторах открыть изначально как текстовые файлы, содержащие сторонние элементы.

Изменение расширений текстовых файлов

Что касается изменения расширения, иногда его можно поменять, например, .txt в.doc и обратно. Редактор Word откроет любой тип. То же самое относится к паре.txt - .bat при открытии в «Блокноте». Но в других случаях лучше такие манипуляции не производить, это попросту ни к чему не приведет, и другое приложение переименованный файл открыть не сможет. Изменение формата придется производить при помощи специальных программ-конверторов.

Вместо послесловия

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

Текстовые файлы состоят из символьных строк переменной длины. Каждая строка завершается специальной комбинацией, называемой «конец строки». Комбинация «конец строки» состоит из двух символов: «перевод каретки» (ASCII-код #13) и «перевод строки» (#10). Завершается текстовый файл символом «конец файла» (#26).

Описание текстового файла осуществляется объявлением переменной типа Text:

var файловая_переменная: Text;

Чтение из текстового файла осуществляется операторами Read и ReadLn. Чтобы прочитать данные из файла, в качестве первого параметра указывают имя файловой переменной, а далее через запятую перечисляются переменные, в которые осуществляется чтение данных из файла. В текстовом файле данные хранятся в строковом виде. Однако, если элемент данных может быть преобразован в число, это преобразование осуществляется автоматически при вводе в числовые переменные. Элементы числовых данных в строках текстового файла разделяются пробелами или символами табуляции. Если строка файла закончилась, а состоящий из числовых или символьных переменных список ввода в операторе Read не исчерпался, то ввод продолжается со следующей строки. При вводе данных из текстового файла в символьные переменные элементы данных не разделяются. Если в списке данных после числовой переменной идет строковая, то пробел, который следует после числового значения в файле, считывается в строку (это же справедливо и при считывании в символьную переменную).

Отличие операторов Read и ReadLn при чтении из текстовых файлов состоит в том, что оператор ReadLn, поместив значение в последнюю переменную списка ввода, переходит на начало следующей строки, не считывая оставшиеся в строке данные. С другой стороны, оператор Read остается готовым считывать данные со следующей позиции текущей строки. Так, предположим, что в текстовом файле f имеются две строки:

1 - 2 4

В этом случае два оператора Read(f,m); Read(f,n); поместят в целочисленные переменные m и n соответственно значений 1 и -2, а два оператора ReadLn(f,m); ReadLn(f,n); считают значения 1 и 4.

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

var f, f1: Text; a, max: LongInt ; flag: Boolean ; begin Assign(f, "f.txt" ) ; Reset(f) ; while not Eof (f) do begin Read (f, a) ; if a>max then max : = a; end ; Assign(f1, "f1.txt" ) ; Rewrite(f1) ; Reset(f) ; while not Eof (f) do begin Read (f, a) ; if a<>max then WriteLn (f1, a) ; end ; Close(f) ; Close(f1) ; end .

В примере файл f.txt прочитывается два раза. Первый раз для определения максимального числа, второй раз - для считывания чисел и их записи во второй файл. Данный алгоритм используется, если максимальных чисел в файле несколько.

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

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

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

Текстовый файл трактуется в Турбо Паскале как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой записи (строки) ставится специальный признак EOLN (End OfLiNe - конец строки), а в конце всего файла - признак EOF (End Of File - конец файла). Эти признаки можно протестировать одноименными логическими функциями (см. ниже). При формировании текстовых файлов используются следующие системные соглашения:

EOLN- последовательность кодов ASCII #13 (CR) и #10 (LF);

EOF - код #26 стандарта ASCII.

Для доступа к записям применяются процедуры READ, READLN, WRITE, WRITELN. Они отличаются возможностью обращения к ним с переменным числом фактических параметров, в качестве которых могут использоваться символы, строки и числа. Первым параметром в любой из перечисленных процедур может стоять файловая переменная. В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с переменной процедурой ASSIGN. Если файловая переменная не указана, происходит обращение к стандартным файлам INPUT к OUTPUT.

Процедура READ.

Обеспечивает ввод символов, строк и чисел. Формат обращения:

READ (<ф.п.>,<сп.ввода>) или READ (<сп.ввода>)

Здесь <сп.ввода> - список ввода: последовательность из одной или более переменных типа CHAR, STRING, а также любого целого или вещественного типа.

При вводе переменных типа CHAR выполняется чтение одного символа из файла и присваивание считанного значения переменной. Если перед выполнением чтения указатель файла достиг конца очередной строки, то результатом чтения будет символ CR (ASCII код #13), а если достигнут конец файла, то - символ EOF (код #26). При вводе с клавиатуры символ CR вводится при нажатии на клавишу Enter, а символ EOF - при одновременном нажатии клавиш CTRL и Z.

При вводе переменных типа STRING количество считанных процедурой и помещенных в строку символов равно максимальной длине строки, если только раньше не встретились символы CR или EOF. В этом случае сами символы CR и EOF в строку не помещаются. Если количество символов во входном потоке данных больше максимальной длины строки, «лишние» символы до конца строки отбрасываются,а новое обращение к READ возвращает пустую строку. Таким образом, процедура READ не в состоянии прочесть последовательность строк: первая строка будет прочитана нормально, а все последующие окажутся пустыми. Для ввода последовательности строк нужно использовать процедуру READLN (см. ниже).

При вводе числовых переменных процедура READ вначале выделяет подстроку во входном потоке по следующему правилу: все ведущие пробелы, символы табуляции и маркеры конца строк EOLN пропускаются; после выделения первого значащего символа, наоборот, любой из перечисленных символов или символ EOF служат признаком конца подстроки. Выделенная таким образом подстрока затем рассматривается как символьное представление числовой константы соответствующего типа и преобразуется во внутреннее представление, а полученное значение присваивается переменной. Если в подстроке был нарушен требуемый формат представления численной константы, возникает ошибка ввода-вывода. Если при пропуске ведущих пробелов встретился символ EOF, переменная получает значение 0. Отметим, что в Турбо Паскале не предусмотрен ввод шестнадцатеричных констант.

При использовании процедуры READ применительно к стандартному файлу INPUT, т.е. при вводе с клавиатуры, символьные строки запоминаются в буфере, который передается процедуре только после нажатия на клавишу Enter. Это позволяет редактировать данные при их вводе. Для редактирования используются следующие клавиши:

  • Backspace, Ctrl-H, перевод курсора влево - стирают символ слева от курсора;
  • перевод курсора вправо - восстанавливает символ за символом предыдущую строку ввода;
  • Ctrl-Z Enter - завершает ввод по процедуре READ; оставшиеся «лишние» символьные параметры принимают значение CHR(26), строки возвращаются пустыми, а численные переменные остаются без изменения.

Максимальная длина буфера ввода при работе с клавиатурой составляет 127 символов. Ввод с клавиатуры по процедуре READ сопровождается эхо-повтором вводимых символов на экране ПК.

Процедура READ прекрасно приспособлена к вводу чисел. При обращении к ней за вводом очередного целого или вещественного числа процедура «перескакивает» маркеры конца строк, т.е. фактически весь файл рассматривается ею как одна длинная строка, содержащая текстовое представление чисел. В сочетании с проверкой конца файла функцией EOF процедура READ позволяет организовать простой ввбд массивов данных, например, так:

const

N = 1000; {Максимальная длина ввода}

f: text;

m: array of real;

I: Integer;

Begin

assign(f, "prog.dat") ;

reset(£); i:= 1;

while not EOF(f) and (i <= N) do

Begin

read(f ,m[i]) ;

inc(i)

end;

close(f);

.......

end.

Процедура READLN.

Обеспечивает ввод символов, строк и чисел. Эта процедура идентична процедуре READ за исключением того, что после считывания последней переменной оставшаяся часть строки до маркера EOLN пропускается, поэтому следующее обращение к READLN или READ начинается с первого символа новой строки. Кроме того, эту процедуру можно вызвать без параметра (см. процедуру READ), что приведет к пропуску всех символов текущей строки вплоть до EOLN.

Если процедура используется для чтения с клавиатуры, нажатие на клавишу Enter отобразится на экране как последовательность CR + LF и курсор будет помещен в начало следующей строки, в то время как в процедуре READ эхо-повтором клавиши Enter является символ CR и курсор помещается в начало текущей строки.

Процедура WRITE.

Обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройство. Формат обращения:

WRITE (<ф.п.>, <сп.вывода>) или WRITE (<сп.вывода>)

Здесь <сп.вывода> - список вывода: последовательность из одного или более выражений типа CHAR, STRING, BOOLEAN, a также любого целого или вещественного типа.

Файловая переменная <ф.п.>, если она указана, должна быть предварительно описана как переменная типа TEXT и связана с именем файла или логическим устройством процедурой ASSIGN. Если файловая переменная отсутствует, подразумевается вывод в стандартный файл OUTPUT, который обычно связан с экраном ПК.

Любой элемент списка вывода может иметь форму

OutExpr [ : MinWidth [ : DecPlaces ] ]

Здесь OUTEXPR - выводимое выражение;

MINWIDTH, DECPLACES - выражения типа WORD (квадратные скобки означают возможность отсутствия заключенных в них параметров).

Подпараметр MINWIDTH, если он присутствует, указывает минимальную ширину поля, в которое будет записываться символьное представление значения OUTEXPR. Если символьное представление имеет меньшую длину, чем MINWIDTH, оно будет дополнено слева пробелами, если - большую длину, то подпараметр MINWIDTH игнорируется и выводится необходимое число символов.

Подпараметр DECPLACES задает количество десятичных знаков в дробной части вещественного числа. Он может использоваться только совместно с MINWIDTH и только по отношению к выводимому выражению одного из вещественных типов.

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

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

При выводе логических выражений в зависимости от их значения выводятся строки TRUE или FALSE. (Ввод логических констант процедурами READ или READLN не предусмотрен).

Вещественные числа выводятся в экспоненциальном формате, если не указан подпараметр DECPLACES, в противном случае выбирается формат представления числа с фиксированной точкой. Экспоненциальный формат представляет вещественное число в виде

S#.##############E*####,

где:

Пробел;

s пробел для положительного и знак «-» для отрицательного чисел;

# десятичная цифра;

Е символ десятичного основания;

* знак «+» или «-» в зависимости от знака десятичного порядка числа.

Если подпараметр MINWIDTH опущен, принимается его значение по умолчанию (23). Если MINWIDTH меньше 10, считается, что он равен 10.

Если подпараметр DECPLACES равен нулю, ни дробная часть числа, ни десятичная точка не выводятся. При отрицательном значении DECPLACES этот параметр игнорируется и число выводится в экспоненциальном формате с учетом MINWIDTH. Если значение DECPLACES больше 18, принимается значение 18. Следует учесть, что при указании подпараметра DECPLACES вещественное число всегда будет выводиться в формате с фиксированной точкой и требуемым количеством знаков в дробной части, даже если значение подпараметра MINWIDTH окажется недостаточным для размещения целой части: в этом случае значение MINWIDTH автоматически увеличивается.

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

Процедура WRITELN. Эта процедура полностью идентична процедуре WRITE за исключением того, что выводимая строка символов завершается кодами CR и LF. При вызове WRITELN можно опускать параметр <сп.вывода>: в этом случае в файл передается маркер EOLN, что при выводе на экран приведет к переводу курсор» в начало следующей строки.

Логическая функция EOLN. Возвращает TRUE, если во входном текстовом файле достигнут маркер конца строки. Формат обращения:

EOLN<ф.п.>

Если параметр <ф.п.>

Существует некоторое отличие в работе функций EOLN и EOF с дисковыми файлами и логическими устройствами. Дело в том, что для логического устройства невозможно предвидеть, каким будет результат чтения очередного символа. Поэтому при работе с логическим устройством функция EOLN возвращает TRUE, если последним считанным с устройства символом был EOLN или EOF, в то время как при чтении с диска TRUE возвращается в случае, если следующим считываемым символом будет EOLN или EOF. Аналогичное различие наблюдается и в функции EOF: для логического устройства TRUE возвращается в случае, если последним символом был EOF, а при чтении с диска - если следующим считываемым символом будет EOF. Иными словами, функции тестируют соответствующие признаки для логического устройства после очередного чтения, а для файла - перед чтением.

Логическая функция SEEKEOLN.

Пропускает все пробелы и знаки табуляции до маркера конца строки EOLN или до первого значащего символа и возвращает TRUE, если маркер обнаружен. Формат обращения:

SEEKEOLN (<ф.п.>)

Если параметр <ф.п.> опущен, функция проверяет стандартный файл INPUT.

Логическая функция SEEKEOF.

Пропускает все пробелы, знаки табуляции и маркеры конца строки EOLN до маркера конца файла или до первого значащего символа и возвращает TRUE, если маркер обнаружен. Формат обращения:

SEEKEOF (<ф.п.>)

Если параметр <ф.п.> опущен, функция проверяет стандартный файл INPUT.

В следующем примере, иллюстрирующем работу с текстовым файлом, подсчитывается общее количество символов в файле и результат делится на 40000 - таким способом можно оценить объем рукописи в так называемых учетно-издательских листах:

f: text;

s: String;

Const

Sum: LongInt = 0; {Здесь будет количество символов}

Begin

Write("Имя файла: ");{Запрашиваем...}

Readln(s); {и вводим имя файла.}

assign(f,s);

Reset (f); {Открываем файл}

while not EOF(f) do {Подсчитываем...}

begin {количество. . .}

ReadLn(f,s); {символов...}

inc(Sum, Length(s)) {в файле}

end ;

Close(f); {Закрываем файл}

WriteLn("Объем = ", Sum/40000: 6:2," уч.изд.л.")

end.

Текстовый файл можно рассматривать как последовательность символов, разбитую на строки длиной от 0 до 256 символов. Это файлы последовательного доступа. Структурной единицей текстовых файлов является строка. Данные в таких файлах хранятся в виде цепочки ASCIIкодов и могут обрабатываться любым текстовым редактором. Каждая строка завершается маркером конца строки. На практике такой маркер представляет собой последовательность из двух символов: перевод строкиchr(10)и возврат кареткиchr(13). Эти два символа задают стандартные действия по управлению текстовыми файлами.

Текстовые файлы описывается в разделе описания переменных:

Файловая_переменная: TextFile;

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

Открытие текстового файла

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

AssignFile(файловая переменная, имя файла),

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

Например:

AssignFile(F,’c:\Student\Primer.Txt’);

Процедуры для открытия текстовых файлов

Обращение к процедуре

Действие

Открывает (создает) новый файл. Имя файла предварительно определяется в процедуре AssignFile.Если на диске уже был файл с таким именем, то он уничтожается.

Открывает уже существующий файл. Файл считывается последовательно. Если эта процедура применена к несуществующему файлу, то возникает ошибка ввода-вывода.

Открывает уже существующий файл для дозаписи. Запись производится в конец файла.

В таблице F– имя файловой переменной.

Обработка текстовых файлов

У текстовых файлов есть своя специфика. Специальные расширения стандартных процедур чтения (Read) и записи (Write), описанных ниже, разрешают работать со значениями несимвольного типа. Другими словами, последовательность символов автоматически преобразуется к значению того типа переменной, которая используется в файловых операциях.

Вызов Read(F,Ww),гдеWw- переменная типаword, осуществляет чтение из файлаFпоследовательности цифр, которая затем интерпретируется в число, значение которого и будет присвоено переменнойWw. В случае, если вместо последовательности цифр идет любая другая последовательность символов, использование такого оператора приводит к ошибке выполнения программы.

В таблице F– имя файловой переменной.V1,V2,…,Vn– переменные разных типов.

Обращение к процедуре

Действие

Read(F,V1[,V2,…,Vn]);

Считывает из дискового файла строки символов в переменные V1, V2,…,Vn.

Readln(F,V1[,V2,…,Vn]);

Read , и дополнительно – чтение до маркера конца строки и переход к новой строке

Readln (F ) без списка переменных позволяет пропустить строку в файле и перейти на новую строку.

Write(F,V1[,V2,…,Vn]);

Записывает значения переменных V1,V2,…,Vn в файл на диске.

Writeln(F,V1[,V2,…,Vn]);

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

Writeln (F ) без списка переменных. записывает в файл пустую строку.

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

Преимущества и недостатки

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

  • Универсальность - текстовый файл может быть прочитан (так или иначе) на любой системе или ОС , особенно если речь идёт об однобайтных кодировках вроде 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-битного представления текста является программная простота и независимость от проблемы порядка байтов или длины машинного слова на разных платформах. Недостаток - большое количество различных стандартов, что может приводить к несовместимости .). Иногда в начало файла добавляют специальный символ-маркер (U+FEFF

Такой разнобой продиктован принципами работы пишущих машинок: чтобы перейти на новую строку, надо вернуть каретку в начало строки (carriage return ), а затем провернуть барабан на одну строку (line feed ). При печати на принтере тот и другой символ мог стоять обособленно (например, чтобы выделить строку, пропечатав её дважды, или прокрутить барабан на несколько строк), но в текстовых файлах в этом нет нужды.

Помимо названных, в текстовых файлах встречаются такие символы, как табуляция (код 9) и перевод страницы (код 0xC). Последний использовался старыми текстовыми редакторами наподобие ЛЕКСИКОН , а также в файлах, предназначенных для распечатки на принтере.