Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsii_OP / T14.doc
Скачиваний:
137
Добавлен:
17.03.2016
Размер:
405.5 Кб
Скачать

Технологія роботи з файлами даних

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

При роботі з файлами даних слід відзрізняти власне обробку даних від їх зчи­тування з файлу або запису у файл. Обробка даних є внутрішньою справою програми і не має відношення до роботи з файлами. Робота ж з файлом полягає саме у реалізації файлового введення-виведення. Тому основними діями при роботі з файлами є операція зчитування (введення), тобто копіювання значення доступного елемента файлу у потік або змінну, означену у програмі, та операція запису (виведення) - копіювання значення змінної у поточний елемент файлу.

Але тільки цими діями наявні у мовах програмування засоби роботи з файлами не обмежуються. Будь-який файл повинен бути спеціальним чином підготовлений до роботи. Також певним чином потрібно завершити роботу з ним.

Типовий сценарій роботи з файлами даних включає наступні кроки:

  1. зв'язування файлової змінної (потоку) з фізичним файлом;

  2. відкриття файла;

  3. його обробка (читання/запис);

  4. закриття файла.

Перед початком роботи будь-який фізичний файл необхідно зв'язати з ідентифікатором, який буде представляти цей файл у програмі. У деяких мовах програмування для цього служать спеціальні процедури (наприклад, процедура Аssign у Pascal), у інших цей зв'язок встановлюється при відкритті файлу (наприклад, у С/С++).

Відкриття файлу – це операція, яка означає, що програма "захоплює" заданий фізичний файл і повідомляє ОС, що далі вона буде працювати саме з цим файлом. Такий крок потрібен, щоб не виникало конфліктів при спробі одночасного запису інформації в один і той же файл різними програмами.

При відкритті логічного файлу, зазвичай, виконуються наступні дії:

  • пошук фізичного файла на зовнішньому носії;

  • утворення файлового буферу для обміну з фізичним файлом;

  • встановлення файлового покажчика на початок логічного файлу (потоку).

Оскільки зчитувати дані з файлу можуть одночасно декілька програм, то в операції відкриття файлу, зазвичай, уточнюється, в якому режимі файл відкривається: "читання" (можливе тільки подальше зчитування інформації із файла), "запису" (можливий тільки запис даних у файл) або "читання" і "запису" (можливе як зчитування інформації із файла, так і запис даних у файл). В деяких мовах програмування при відкритті файлу також вказується його тип: текстовий або бінарний (двійковий).

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

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

Логічним завершенням роботи з відкритим файлом є його від’єднання від програми. Цю операцію називають закриттям файлу. При закритті логічного файла, відкритого для запису, всі дані, що накопичилися у системному буфері, записуються у фізичний файл, а сам буфер, утворений при відкритті файлу, ліквідується. Цей процес, який, зазвичай, називають дозаписом потоку (або примусовим звільненням буфера), гарантує, що ніяка інформація випадково не залишиться в буфері диска. Після цього ідентифікатор логічного файла можна зв'язати з іншим дисковим файлом, а закритийфайлстає доступним для обробки іншими програмами. Якщо програма завершує свою роботу нормально, то всі файли закриваються автоматично; у разі аварійного завершення роботи програми, файли не закриваються.

Робота з файлами даних в мовах програмування може виконуватися кількома різними способами:

  • з використанням бібліотечних функцій;

  • з використанням бібліотеки класів;

  • з використанням WinAPI-функцій введення-виведення, які використовують файлові дескриптори2;

  • з використанням бібліотечних компонентів тощо.

Файлове введення-виведення у С/С++, як правило, здійснюється або за допомогою бібліотечних функцій (в стилі C), або з використанням бібліотеки класів C++ (в стилі C++). 

Соседние файлы в папке lektsii_OP