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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Піктограммний опис текстового файлу з 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.


Примітки[ред.ред. код]

Дивись також[ред.ред. код]