Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 9 (Файли).docx
Скачиваний:
29
Добавлен:
16.05.2015
Размер:
64.85 Кб
Скачать

Перевірка помилок при виконання файлових операцій

Програми, представлені до теперішнього моменту, припускали, що під час фай­ло­вих операцій В/В не відбуваються помилки. На жаль, це збувається не завжди. Наприклад, якщо відкривати файл для введення, треба перевірити, що файл існує. Аналогічно, якщо програма пише дані в файл, необхідно переконатися, що операція пройшла успішно (наприклад, відсутність місця на диску, швидше за все, перешкодить запису даних). Щоб допомогти програмам стежити за помилками, можна використовувати функцію fail файлового об'єкта. Якщо в процесі файлової операції помилок не було, функція поверне false (0). Однак, якщо зустрілася помилка, функція fail поверне true (1). Наприклад, якщо програма відкриває файл, їй слід викорис­то­ву­вати функцію fail, щоб визначити, чи відбулася помилка, як це показано нижче:

ifstream input_file ("FILENAME.DAT"); if (input_file.fail ()) {  cerr <<"Помилка відкриття FILENAME.EXT" <<endl;    exit (1); }

Таким чином, програми повинні переконатися, що операції читання і запису пройшли успішно. Наступна програма TEST_ALL.CPP використовує функцію fail для перевірки різних помилкових ситуацій:

# include <iostream.h> # include <fstream.h> void main (void) {  char line [256];    ifstream input_file ("BOOKINFO.DAT");    if (input_file.fail ()) cerr <<"Помилка відкриття BOOKINFO.DAT" <<endl;    else    {   while ((! input_file.eof ()) & & (! input_file.fail ()))       {   input_file.getline (line, sizeof (line));          if (! input_file.fail ()) cout <<line <<endl;    } } }

Закриття файлу

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

input_file.close ();

Коли ви закриваєте файл, всі дані, які ваша програма писала в цей файл, скидаються на диск, і оновлюється запис каталогу для цього файлу.

Управління відкриттям файлу

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

ifstream output_file ("FILENAME.EXT", ios:: app);

В даному випадку параметр ios:: app вказує режим відкриття файлу. В міру ускладнення ваших програм вони будуть використовувати поєднання значень для режиму відкриття файлу, що перераховані в табл.

Режим відкриття

Призначення

ios::app

Відкриває файл в режимі додавання, встановлюючи файловий покажчик на кінець файлу

ios::ate

Встановлює файловий покажчик на кінець файлу

ios::in

Вказує відкрити файл для введення .

ios::nocreate

Якщо й файл не існує, не створювати файл і повернути помилку

ios::noreplace

Якщо файл існує, операція відкриття повинна бути перервана и повинна повернути помилку

ios::out

Вказує відкрити файл для виведення .

ios::trunc

Перезаписує вміст існуючого файлу

Наступна операція відкриття файлу відкриває файл для виведення, використовуючи режим ios:: noreplace, щоб запобігти перезапис існуючого файлу:

ifstream output_file ("FIlename.EXT", ios:: out | ios:: noreplace);