Відмінності між версіями «Відкриття та закриття файлів»
Рядок 9: | Рядок 9: | ||
Параметр файл може здаватися в декількох формах, перерахованих нижче:<br> | Параметр файл може здаватися в декількох формах, перерахованих нижче:<br> | ||
* Якщо параметр містить ім'я локального файлу, функція '''''fopen''()'' відкриває цей файл і повертає маніпулятор. | * Якщо параметр містить ім'я локального файлу, функція '''''fopen''()'' відкриває цей файл і повертає маніпулятор. | ||
− | * Якщо параметр заданий у вигляді php: / / stdin, php: / / stdout або php: / / stderr, відкривається відповідний стандартний потік вводу / виводу. | + | * Якщо параметр заданий у вигляді php: // stdin, php: // stdout або php: // stderr, відкривається відповідний стандартний потік вводу/виводу. |
* Якщо параметр починається з префікса '''http://''', функція відкриває підключення HTTP до сервера і повертає маніпулятор для зазначеного файлу. | * Якщо параметр починається з префікса '''http://''', функція відкриває підключення HTTP до сервера і повертає маніпулятор для зазначеного файлу. | ||
* Якщо параметр починається з префікса '''ftp://''', функція відкриває підключення FTP до сервера і повертає маніпулятор для зазначеного файлу. У цьому випадку слід звернути особливу увагу на дві обставини: якщо сервер не підтримує пасивний режим FTP, виклик '''''fopen''()''' завершується невдачею. Більш того, FTP-файли відкриваються або для читання, або для запису.<br/> | * Якщо параметр починається з префікса '''ftp://''', функція відкриває підключення FTP до сервера і повертає маніпулятор для зазначеного файлу. У цьому випадку слід звернути особливу увагу на дві обставини: якщо сервер не підтримує пасивний режим FTP, виклик '''''fopen''()''' завершується невдачею. Більш того, FTP-файли відкриваються або для читання, або для запису.<br/> | ||
Рядок 50: | Рядок 50: | ||
<br/> | <br/> | ||
− | Якщо необов'язковий третій параметр | + | Якщо необов'язковий третій параметр '''Bключення_шляху''' дорівнює '''1''', то шлях до файлу визначається по відношенню до каталогу включення файл, вказаною у файлі php.<br> |
− | Нижче наведено приклад відкриття файлу функцією fopen (). Виклик die (), який використовується у поєднанні з fopen (), забезпечує вивід повідомлення про помилку в тому випадку, якщо відкрити файл не вдасться:< | + | Нижче наведено приклад відкриття файлу функцією '''''fopen''()'''. Виклик '''''die''()''', який використовується у поєднанні з '''''fopen''()'', забезпечує вивід повідомлення про помилку в тому випадку, якщо відкрити файл не вдасться: |
− | < | + | <font color="#008000">$</font><font color="#0000FF">File</font> = <font color="#FF0000">"userdata.txt";</font> <font color="#FF8000">// Певний файл</font> |
− | + | <font color="#008000">$</font><font color="#0000FF">Fh</font> = <font color="#0000FF">fopen</font>(<font color="#008000">$</font><font color="#0000FF">file</font>, <font color="#FF0000">"a+"</font>) <font color="#0000FF">or die</font> (<font color="#FF0000">"File ($file) does not exist!"</font>); | |
− | + | ||
− | $Fh = fopen ($ file, "a +") or die ("File ($file) does not exist!" | + | |
Наступний фрагмент відкриває підключення до сайту PHP '''(http://www.php.net):'''<br/> | Наступний фрагмент відкриває підключення до сайту PHP '''(http://www.php.net):'''<br/> | ||
− | < | + | <font color="#008000">$</font><font color="#0000FF">Site</font> = <font color="#0000FF">"http://www.php.net"</font>; <font color="#FF8000">// Сервер, доступний через HTTP</font> |
− | $Site = "http://www.php.net" | + | <font color="#008000">$</font><font color="#0000FF">Sh</font> = <font color="#0000FF">fopen</font> (<font color="#008000">$</font><font color="#0000FF">site</font>, <font color="#FF0000">"R"</font>); <font color="#FF8000">// Зв'язати маніпулятор з індексного сторінкою Php.net</font> |
− | + | ||
− | $Sh = fopen ($site | + | |
Після завершення роботи файл завжди слід закривати функцією fclose ().<br/> | Після завершення роботи файл завжди слід закривати функцією fclose ().<br/> | ||
'''fclose ()'''<br/><br/> | '''fclose ()'''<br/><br/> |
Версія за 11:02, 5 травня 2010
Перш ніж виконувати операції вводу/виводу з файлом, необхідно відкрити його функцією fopen().
Функція fopen()
Функція fopen() відкриває файл (якщо він існує) і повертає ціле число - так званий файловий маніпулятор (file handle).
Синтаксис функції fopen():
int fopen (string файл, string режим ,[int включення_шляху])
Відкриває файл може знаходитися в локальній файловій системі, існувати у вигляді стандартного потоку вводу / виводу або представляти файл у віддаленій системі, що приймається засобами HTTP або FTP.
Параметр файл може здаватися в декількох формах, перерахованих нижче:
- Якщо параметр містить ім'я локального файлу, функція fopen() відкриває цей файл і повертає маніпулятор.
- Якщо параметр заданий у вигляді php: // stdin, php: // stdout або php: // stderr, відкривається відповідний стандартний потік вводу/виводу.
- Якщо параметр починається з префікса http://, функція відкриває підключення HTTP до сервера і повертає маніпулятор для зазначеного файлу.
- Якщо параметр починається з префікса ftp://, функція відкриває підключення FTP до сервера і повертає маніпулятор для зазначеного файлу. У цьому випадку слід звернути особливу увагу на дві обставини: якщо сервер не підтримує пасивний режим FTP, виклик fopen() завершується невдачею. Більш того, FTP-файли відкриваються або для читання, або для запису.
При роботі в пасивному режимі сервер очікує підключення з боку клієнтів. При роботі в активному режимі сервер сам встановлює з'єднання з клієнтом. За замовчуванням звичайно використовується активний режим.
Параметр режим визначає можливість виконання читання і запису у файл. У табл. 1 перераховані деякі значення, що визначають режим відкриття файлу.
Режим | Опис |
---|---|
r | Файл відкривається тільки для читання. Якщо файлу не існує, виклик реєструє помилку. Після успішного відкриття вказівник файлу встановлюється на його перший байт, тобто на початок. |
r + | Файл відкривається одночасно для читання та запису. Вказівник поточної позиції встановлюється в початок файлу, тобто на перший байт. Якщо файлу не існує повертається false. Якщо в момент запису вказівник файлу встановлено приміром в середину файлу, то дані запишуться прямо поверх існуючих, а не розсунуть їх, при необхідності збільшивши розмір файлу. |
w | Тільки запис. Покажчик поточної позиції встановлюється в початок файлу, а весь вміст файлу знищується. Якщо файл не існує, функція намагається створити його. |
w + | Читання і запис. Покажчик поточної позиції встановлюється в початок файлу, а весь вміст файлу знищується. Якщо файл не існує, функція намагається створити його. |
a | Відкриває існуючий файл тільки для запису. Покажчик поточної позиції встановлюється в кінець файлу. Якщо файл не існує, функція намагається створити його. |
a + | Відкриває файл для читання та запису. Покажчик поточної позиції встановлюється в кінець файлу, при цьому вміст файлу не знищується. Якщо файл не існує, функція створює його. Ця функція є корисною, якщо потрібно дописати в файл, але не відомо, чи існує файл. |
Якщо необов'язковий третій параметр Bключення_шляху дорівнює 1, то шлях до файлу визначається по відношенню до каталогу включення файл, вказаною у файлі php.
Нижче наведено приклад відкриття файлу функцією fopen()'. Виклик die(), який використовується у поєднанні з fopen(), забезпечує вивід повідомлення про помилку в тому випадку, якщо відкрити файл не вдасться:
$File = "userdata.txt"; // Певний файл $Fh = fopen($file, "a+") or die ("File ($file) does not exist!");
Наступний фрагмент відкриває підключення до сайту PHP (http://www.php.net):
$Site = "http://www.php.net"; // Сервер, доступний через HTTP $Sh = fopen ($site, "R"); // Зв'язати маніпулятор з індексного сторінкою Php.net
Після завершення роботи файл завжди слід закривати функцією fclose ().
fclose ()
Функція fclose () закриває файл із заданим маніпулятором. При успішному закриття повертається TRUE, при невдачі - FALSE. Синтаксис функції fclose ():
int fclose (int маніпулятор)
Функція fclose () успішно закриває лише ті файли, які були раніше відкриті функціями fopen () або fsockopen (). Приклад закриття файлу:
$File = "userdata.txt"; if (file_exists ($file)): $Fh = fopen ($file, "r"); // Виконати операції з файлом fclose ($fh); else: print "File Sfile does not exist!"; endif; [[Робота з файлами в PHP]] [[category:Інтернет-програмування|*]] [[category:Навчальні проекти]]