Тема. Створення та оброблення файлів даних

 

Файл – це іменована область зовнішньої пам’яті, що містить однотипну інформацію. Файл в такому розумінні називають фізичним файлом, тобто таким, що існує фізично на деякому носії інформації.

З іншого боку файл - це одна із багатьох структур даних, які використовуються у програмах. Файл в такому розумінні називається логічним файлом, тобто який існує тільки в логічному представленні при написанні програми. У програмах логічні файли представляються файловими змінними певного типу.

Структура фізичного файлу являє собою послідовність байтів пам’яті носія інформації. Структури файлів бувають: типовані (у двійковому вигляді); текстові (у символьному); нетиповані (копія оперативної пам’яті).

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

В мові С\С++ поняття файл застосовують до всіх пристроїв: файли на диску, диски, принтери, комунікаційні канали та ін.

Для роботи з файлами використовуються функцій бібліотеки <stdio.h> (мови С) або <сstdio> (мови С++). Вони дозволяють працювати з різними пристроями: диски, принтери, комунікаційні канали та ін. Однак файлова система перетворює їх в єдиний абстрактний логічний пристрій, що має назву потік.

Текстовий потік - це послідовність символів. Стандарт мови С дозволяє (але неп вимагає) організовувати потоки у вигляді рядків, що закінчуються символом переходу. В останньому рядку не обов’язково вказувати символ переходу. Залежно від оточення деякі символи в текстових потоках можуть бути перетвореними. Між записаними в текстовому потоці символами немає відповідності з виведеними на зовнішні пристрої. При передачі символів з ​​потоку на екран, частина з них не виводиться (наприклад, символ повернення каретки, переведення рядку). Тому кількість символів у текстовому потоці та на зовнішньому пристрої може відрізнятися.

Бінарний (Двійковий) потік - це послідовність байтів, які однозначно відповідають тому, що знаходиться на зовнішньому пристрої. Кількість записаних (зчитаних) байтів співпадають з кількістю байтів на зовнішньому пристрої. Бінарний потік може вміщувати додаткові нульові байти, кількість яких залежить від конкретної реалізації. Такі байти використовуються для вирівнювання записів, наприклад для заповнення даними певного сектору диску.

Загальний алгоритм роботи з будь-якими файлами наступний:

1) відкриття файлу – при цьому курсор файлу встановлюється на початок;

2) здійснити дії з даними файлу, при цьому курсор файлу може переміщуватися по файлу;

3) закриття файлу – зв'язок з потоком розривається, а потік очищується. Якщо файл був відкритий для запису усі зміни зберігаються у файлі.

При завершені програми усі потоки пов’язані з файлами повинні бути неодмінно закриті.