Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метвказівки для Астистовой1.doc
Скачиваний:
2
Добавлен:
08.11.2019
Размер:
288.26 Кб
Скачать

6. Загальні відомості про файлові операції

Назвемо основні файлові операції, які звичайно надає операційна система для ви­користання у прикладних програмах.

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

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

  • Створення файлу. Ця операція спричиняє створення на диску нового файла нульової довжини. Після створення файл автоматично відкривають.

  • Вилучення файлу. Ця операція спричиняє вилучення файла і вивільнення зайнятого ним дискового простору. Вона зазвичай недопустима для відкритих файлів.

  • Читання з файлу. Ця операція звичайно зводиться до пересилання певної кількості байтів із файла, починаючи із поточної позиції, у заздалегідь виділе­ний для цього буфер пам'яті режиму користувача.

  • Записування у файл. Здійснюють із поточної позиції, дані записують у файл із заздалегідь виділеного буфера. Якщо на цій позиції вже є дані, вони будуть перезаписані. Ця операція може змінити розмір файла.

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

  • Отримання і задання атрибутів файлу. Ці дві операції дають змогу зчитувати поточні значення всіх або деяких атрибутів файла або задавати для них нові значення.

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

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

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

Для роботи з файлами слід використати наступні функції API.

Відкриття файлу виконується по функції

int open(const char *path, int flags, mode _ t mode);

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

O _ RDONLY - відкриття файлу тільки для читання;

O _ WRONLY - відкриття файлу тільки для запису;

O _ RDWR - відкриття файлу для читання і запису.

Значення параметра може бути логічно доданим до модифікаторів:

O _ APPEND - дані додаються в кінець файлу;

O _ CREAT - створюється файл, якщо він не існує;

O _ TRUNC - якщо файл існує, то його вміст втрачається, а розмір встановлюється рівним 0;

O _ EXCL - використовується спільно з прапором O _ CREAT, в цьому випадку спроба створити файл, якщо він вже існує, закінчується невдачею.

Третій параметр потрібний тільки при створенні нового файлу, зазвичай він задається у вигляді вісімкової константи і визначає права доступу до цього файлу.

Після успішного відкриття файлу функція повертає значення дескриптора файлу.

Читання даних виконується з використанням функцій з бібліотеки мови Сі. Зокрема, для читання можна використати функцію:

ssize _ t read(int fdes, char *buf, size _ t count);

Запис у файл може виконуватися по функції:

ssize _ t write(int fdes, char *buf, size _ t count);

Як перший параметр використовується дескриптор файлу. Другий параметр вказує на буфер обміну. Третій параметр - довжина буфера. При нормальному завершенні повернене значення повинне співпадати зі значенням третього параметра.

Закривається файл функцією

int close(int fdes);

аргументом функції є дескриптор відповідного файлу.