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

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

Те́кстовий файл — форма подання послідовності символів у комп'ютері, де кожен символ із задіяного набору символів кодується одним байтом чи послідовністю двох, трьох і т. д. байтів. На відміну від терміна «текстовий формат», що характеризує вміст даних, термін «текстовий файл» стосується файлу та характеризує його як контейнер, який зберігає такі дані.

Опис[ред.ред. код]

Текстовий файл — послідовність символів (переважно друкованих знаків, що належать тому чи іншому набору символів). Ці символи зазвичай згруповані в рядки (англ. lines, rows). У сучасних системах рядки розділяються роздільниками рядків, у минулому ж рядки зберігались у вигляді записів постійної або змінної довжини (див.: Перфокарта). Іноді кінець текстового файлу (особливо тоді, коли в файловій системі не зберігається інформація про розмір файлу) також позначається спеціальними знаками (одним або більше), відомими як маркери кінця файлу.
Текстовий файл може містити як форматований, так і неформатований текст.

Текстовим файлам протиставляються двійкові (бінарні) файли, в яких інформація організована за іншими принципами (вона містить інформацію, не прив'язану до набору символів).

Переваги та недоліки[ред.ред. код]

Переваги:[ред.ред. код]

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

Недоліки:[ред.ред. код]

  • У великих нестиснутих текстових файлів низька інформаційна ентропія — ці файли займають більше місця, ніж мінімально необхідно. Хоча ця ж надмірність інформації[en] визначає підвищену стійкість до збоїв у каналах передачі даних і при отриманні даних з носіїв, наприклад, з магнітної стрічки.
  • Деякі операції з текстовими файлами неефективні. Наприклад, якщо в файлі зустрінеться число, обчислювальна система до початку операцій з ним повинна буде перетворити його в свій внутрішній формат, застосувавши порівняно складну процедуру конвертації числа; щоб перейти на 1000-ий рядок, потрібно порахувати попередні 999 рядків; складно замінити один рядок іншим, тощо. Тому при роботі з великими обсягами даних текстові файли застосовують лише як проміжний формат, що забезпечує інтероперабельність[en].

Формати, засновані на текстових файлах[ред.ред. код]

В силу своєї простоти текстові файли нерідко використовуються для зберігання службової інформації (наприклад, логів[ru]): оскільки операція додавання в кінець текстового файлу нових даних не вимагає значних обчислювальних ресурсів (незалежно від уже наявного обсягу файлу і виду текстових даних, що додаються), ведення текстових лог-файлів зазвичай відбувається ефективно та непомітно для користувача і для інших додатків (аж до вичерпання дискового простору). Текстовий формат служить основою для багатьох спеціалізованих форматів (наприклад, .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-бітного представлення тексту є програмна простота та незалежність від проблеми порядку байтів або довжини машинного слова на різних платформах. Недолік — багато різних, часом несумісних[ru] стандартів.

Unicode в текстових файлах[ред.ред. код]

Застосування Unicode у текстових файлах хоча й переважно вирішує «проблему кодувань» та стандартизує вживання керуючих символів, але створює свої проблеми. У більшості сучасних систем неподільною одиницею інформації в потоці даних є байт (октет, 8 біт), яких для кодування одного символу Юнікоду потрібно декілька. Як вихід, застосовуються несумісні між собою системи: UTF-8 і дві версії UTF-16 (UTF-16LE та UTF-16BE з протилежним між собою порядком байтів). Іноді в початок файлу додають спеціальний символ-маркер (U + FEFF[1]), що дозволяє розпізнати формат однозначно. UTF-8 має перевагу зворотної сумісності з ASCII, однак програмна обробка тексту в UTF-8 ускладнюється непостійним розміром символу. Тексти в Юнікоді відрізняються ще більшою надмірністю[en], ніж 8-бітові.

Символи керування[ред.ред. код]

Докладніше: Керуючі символи

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

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

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