Текстовий файл
Те́кстовий файл (англ. textfile; застаріле англ. flatfile) — форма подання послідовності символів у комп'ютері, де кожен символ із задіяного набору символів кодується одним байтом чи послідовністю двох, трьох і т. д. байтів.
На відміну від терміна «текстовий формат», що характеризує вміст даних, термін «текстовий файл» стосується файлу та характеризує його як контейнер, який зберігає такі дані.
Опис
Текстовий файл — послідовність символів (переважно друкованих знаків, що належать тому чи іншому набору символів). Ці символи зазвичай згруповані в рядки (англ. 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), що дозволяє розпізнати формат однозначно. UTF-8 має перевагу зворотної сумісності з ASCII, однак програмна обробка тексту в UTF-8 ускладнюється непостійним розміром символу. Тексти в Юнікоді відрізняються ще більшою надмірністю, ніж 8-бітові[1].
Джерела
- Freytag, Asmus (18 грудня 2015). FAQ – UTF-8, UTF-16, UTF-32 & BOM. The Unicode Consortium. Процитовано 30 травня 2016. «Yes, UTF-8 can contain a BOM. However, it makes no difference as to the endianness of the byte stream. UTF-8 always has the same byte order. An initial BOM is only used as a signature — an indication that an otherwise unmarked text file is in UTF-8. Note that some recipients of UTF-8 encoded data do not expect a BOM. Where UTF-8 is used transparently in 8-bit environments, the use of a BOM will interfere with any protocol or file format that expects specific ASCII characters at the beginning, such as the use of "#!" of at the beginning of Unix shell scripts.»
- 3.403 Text File. IEEE Std 1003.1, 2017 Edition. IEEE Computer Society. Процитовано 1 березня 2019.