Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Низькорівневе звертання до файлів

Інші засоби для роботи з файлами

10.1. Функції <dir.h> для роботи з каталогами та файлами

Додаткові можливості щодо роботи з файлами та каталогами MS DOS надають програмістові бібліотечні функції Borland C, прототипи яких оголошені в заголовному файлі <dir.h>. Серед них:

 

· getdisk( )/setdisk() - визначення/зміна поточного системного диска;

· mkdir ()/chdir ()/rmdir () - створення/зміна/витирання каталога;

· getcurdir ()/getcwd () - визначення активного каталога для поточного або заданого диска;

· mktemp () - генерування унікального імені файла; І.

· • findf irst ()/findnext () - пошук у заданому каталозі першого/наступного файлу, ім'я якого відповідає вказаному шаблону;

· fnsplit () - формування повного імені файла зі складових частин;

· searchpath () - визначення шляху до файла.

 


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

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

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

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


 

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

 

· open ()/creat () - відкрити/створити файл;

· sopen () - відкрити файл для спільного використання декількома процесами;

· read ()/write () - читання/запис даних;

· lseek () - позиціювання покажчика поточної позиції файла;

· tell () - визначення поточної позиції файла;

· eof () - перевірка досягнення кінця файла;

· close () - закриття файла.

 

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

int fileno (FILE* fp);

оголошену в <stdio.h>. Функція повертає дескриптор файлу, пов'язаного з потоком fр.

Це дає змогу додатково до функцій високорівневого обміну даними застосо­вувати до файла з потоку fр необхідні функції з <іо.h>.


 

Зокрема, корисною може бути функція

long filelength (int handle);

яка визначає розмір (у байтах) відкритого файлу, заданого дескриптором handle. У разі виникнення ромилки функція повертає значення -1.

 

Раніше для визначення розміру файлу ми розробили окрему функцію FileSize (), в якій використали декілька стандартних бібліотечних функцій: fseek (), ftell (), fgetpos () та fsetpos (). Через filelength () розмір файлу, пов'язаного з потоком fp, можна знайти так:

/* Визначення розміру файлу */

#include <stdio.h>

#include <io.h>

FILE *fp;

long fsize;

. . . /* відкриття файлу функцією fopen () */

Fsize = filelength( fileno (fp) );

 


Корисною для багатьох практичних задач є також функція

 

int chsize (int handle, long newsize);

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

chsize (fileno(fp), 250);

обмежить розмір файлу, пов'язаного з потоком fp, 250-ма початковими байтами. Функція chsize () повертає нуль у разі успішного виконання та -1 у разі невдачі.

Дві наступні функції:

int getftime (int handle, struct ftime * timebuf);

int setftime (int handle, struct ftime * timebuf);

дають змогу отримати/встановити дату і час системної реєстрації файлу, заданого дескриптором handle. Дані заносяться в змінну (чи ділянку пам'яті) або відповідні зчитуються зі змінної (чи ділянки пам'яті), на яку вказує timebuf. Змінна, адресу якої задає параметр timebuf, повинна бути структурою, точніше - полем бітів зі шаблоном struct ftime, оголошеним в <іо.h>. Шість полів цієї структури призначені для збереження року, місяця, дня, години, хвилин і секунд, що характеризують часові параметри файлу. Функція повертає нуль у разі успішного виконання та значення -1 якщо виникає помилка.


 

Інформацію про відкритий файл можна отримати також за допомогою функції fstat ( ), оголошеної в <sysstat.h>:

int fstat (int handle, struct stat* statbuf);

 

Перший параметр функції fstat ( ) - handle задає дескриптор файлу, а другий -statbuf вказує адресу змінної (ділянки пам'яті), куди будуть записані дані. Відповідна змінна повинна бути структурою, що має встановлений шаблон struct stat.

 

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


Читайте також:

  1. Видалення та відновлення папок та файлів
  2. Використання спеціальних файлів
  3. Витирання та перейменування файлів
  4. Збереження зовнішніх файлів у Портфель
  5. Копіювання та переміщення файлів і папок
  6. Культура поведінки соціального працівника з клієнтом: знайомство, вітання, представлення, звертання, спілкування тощо
  7. Можливості файлової системи NTFS по обмеженню доступу до файлів і каталогів
  8. Об‘єкти Windows. Папки. Документи. Додатки, Ярлики. Створення файлів. Дії визначені над об‘єктами Windows. Пошук об‘єктів. Властивості об‘єктів.
  9. Однобічна спрямованість рекламного звертання від продавця до покупця.
  10. Організація і представлення даних. Файл. Файлова система. Ім’я файлу, шлях до файлів. Властивості файлів.
  11. Організація файлів




Переглядів: 743

<== попередня сторінка | наступна сторінка ==>
Витирання та перейменування файлів | 

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.005 сек.