69705

Читання і запис в бінарному режимі

Лекция

Информатика, кибернетика и программирование

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

Украинкский

2014-10-09

53.5 KB

0 чел.

Тема 25: Читання і запис в бінарному режимі

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

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

Line1\nLine2\Line3<- Line1\nLine2\Line3<- Line1\nLine2\Line3<-

Л Л Л

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

fread(Sf. 7)

Мал.   11.1. Читання бінарного файлу

Line1\nLine2MJne3<- Line1\nBYTe2\Line3<- Нагадаю, що \n   —    один

символ. Запис даних в

зрушуємо покажчик на Записуємо три байти

7 байтів вут фаил починається з позиції

на яку указує покажчик (див. мал. 11.2).

Мал.   11.2. Запис бінарного файлу тт

і        ^ Читання двійкового (бинарно-

го) файлу здійснюється

функцією fread(). Даній функції потрібно передати всього два параметри -идентификатор файлу і кількість символів, яку потрібно прочитати. Функція повертає рядок, в якому будуть прочитані символи. Якщо

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

Приклад читання двійкового файлу приведений в лістингу 11.1. Лістинг 11.1. Читання двійкового (бінарного) файлу

$f   =   fopen("/home/den/lines.txt","r")    or   die("0um6Ka   при   відкритті   файла\ п"); $s   =   fread($f,    4); echo   $s;

Мал.   11.3. Чтенієдвоїчного(бінарного) файлу

Ми відкрили файл в бінарному режимі "тільки читання". Потім ми прочитали 4 байти і записали їх в рядок $s, яка була виведена на екран. На мал. ll.3 ми бачимо сам файл lines.txt, а також виведення сценарію — рядок Line.

Для запису символів у файл використовується функція fwrite(), якою потрібно передати два параметри — ідентифікатор файлу і рядок, який буде записаний у файл.

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

читання, тому зараз запис неможливий. Виправимо це упущення. Напишемо сценарій, який працюватиме так:

Відкриває файл в режимі запису.

«Перемотує» файл на п'яту позицію, тобто встановлює
покажчик поточної позиції.

Записує інформацію у файл.

| Зберігає зміни у файлі.
Текст сценарію приведений в лістингу 11.2.

Лістинг 11.2. Запис в бінарний файл

<?

$f   =   fopen("/home/den/lines.txt","r+")    or   с11е("0шибка   при   відкритті   файла\ п"); fseek($f,    4,    SEEK_SET); fwr.ite ($f, "BYTE") ; fflush($f); ?>


 

А также другие работы, которые могут Вас заинтересовать

55915. Державне управління та адміністративне право 33 KB
  Характеристика методу адміністративного права. Проблеми реформування адміністративного права. Адміністративне право є самостійною галуззю права яка характеризується надмірною мобільністю комплексним характером тернистим шляхом свого становлення.