Відмінності між версіями «Відкриття та закриття файлів»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
 
(не показано 5 проміжних версій цього учасника)
Рядок 5: Рядок 5:
 
Функція '''''fopen''()''' відкриває файл (якщо він існує) і повертає ціле число - так званий файловий маніпулятор '''(file handle)'''.<br>  
 
Функція '''''fopen''()''' відкриває файл (якщо він існує) і повертає ціле число - так званий файловий маніпулятор '''(file handle)'''.<br>  
 
Синтаксис функції '''''fopen''()''':<br>
 
Синтаксис функції '''''fopen''()''':<br>
  <font color="#008000">int</font> <font color="#0000FF">fopen</font> (<font color="#0000FF">string</font> <font color="#FF0000">файл</font>, <font color="#0000FF">string</font> <font color="#FF0000">режим</font> ,[<font color="#0000FF">int</font> <font color="#FF0000">включення_шляху</font>])
+
  <font color="#008000">int</font> <font color="#0000FF">fopen</font> (<font color="#008000">string</font> <font color="#FF0000">файл</font>, <font color="#008000">string</font> <font color="#FF0000">режим</font> ,[<font color="#008000">int</font> <font color="#FF0000">включення_шляху</font>])
 
Відкриває файл може знаходитися в локальній файловій системі, існувати у вигляді стандартного потоку вводу / виводу або представляти файл у віддаленій системі, що приймається засобами HTTP або FTP.<br>
 
Відкриває файл може знаходитися в локальній файловій системі, існувати у вигляді стандартного потоку вводу / виводу або представляти файл у віддаленій системі, що приймається засобами HTTP або FTP.<br>
 
Параметр файл може здаватися в декількох формах, перерахованих нижче:<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/>
  
Якщо необов'язковий третій параметр включення_шляху дорівнює 1, то шлях до файлу визначається по відношенню до каталогу включення файл, вказаною у файлі php.<br/>
+
Якщо необов'язковий третій параметр '''Bключення_шляху''' дорівнює '''1''', то шлях до файлу визначається по відношенню до каталогу включення файл, вказаною у файлі php.<br>
Нижче наведено приклад відкриття файлу функцією fopen (). Виклик die (), який використовується у поєднанні з fopen (), забезпечує вивід повідомлення про помилку в тому випадку, якщо відкрити файл не вдасться:<br/><br/>
+
Нижче наведено приклад відкриття файлу функцією '''''fopen''()'''. Виклик '''''die''()''', який використовується у поєднанні з '''''fopen''()''', забезпечує вивід повідомлення про помилку в тому випадку, якщо відкрити файл не вдасться:
<pre>
+
<font color="#008000">$</font><font color="#0000FF">File</font> = <font color="#FF0000">"userdata.txt";</font> <font color="#FF8000">// Певний файл</font>
$File = "userdata.txt"; // Певний файл
+
<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!");</pre><br/><br/>
+
 
Наступний фрагмент відкриває підключення до сайту PHP '''(http://www.php.net):'''<br/>
 
Наступний фрагмент відкриває підключення до сайту PHP '''(http://www.php.net):'''<br/>
<pre>
+
<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": / / Сервер, доступний через HTTP
+
<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., "R"); / / Зв'язати маніпулятор з індексного сторінкою Php.net</pre><br/><br/>
+
Після завершення роботи файл завжди слід закривати функцією fclose ().<br/>
+
'''fclose ()'''<br/><br/>
+
Функція fclose () закриває файл із заданим маніпулятором. При успішному закриття повертається TRUE, при невдачі - FALSE. Синтаксис функції fclose ():<br/><br/>
+
''int fclose (int маніпулятор)''<br/><br/>
+
Функція fclose () успішно закриває лише ті файли, які були раніше відкриті функціями fopen () або fsockopen (). Приклад закриття файлу:<br/><br/>
+
<pre>
+
$File = "userdata.txt";
+
 
+
if (file_exists ($file)):
+
 
+
$Fh = fopen ($file, "r");
+
  
// Виконати операції з файлом
+
Після завершення роботи файл завжди слід закривати функцією '''''fclose''()'''.<br>
  
fclose ($fh);
+
== функція fclose() ==
  
else:
+
Функція '''''fclose''()''' закриває файл із заданим маніпулятором. При успішному закриття повертається '''''true''''', при невдачі - '''''false'''''.<br>
 +
Синтаксис функції '''''fclose''()''':
  
print "File Sfile does not exist!";
+
<font color="#008000">int</font> <font color="#0000FF">fclose</font> (<font color="#008000">int</font> <font color="#FF0000">маніпулятор</font>)
 +
Функція '''''fclose''()''' успішно закриває лише ті файли, які були раніше відкриті функціями '''''fopen''()''' або '''''fsockopen''()'''.<br>
 +
Приклад закриття файлу:
 +
<font color="#008000">$</font><font color="#0000FF">File</font> = <font color="#FF0000">"userdata.txt"</font>;
 +
<font color="#0000FF">if</font> (<font color="#0000FF">file_exists</font>(<font color="#008000">$</font><font color="#0000FF">file</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">"r"</font>);
 +
    <font color="#FF8000">// Виконати операції з файлом</font>
 +
  <font color="#0000FF">fclose</font>(<font color="#008000">$</font><font color="#0000FF">fh</font>);
 +
<font color="#0000FF">else</font>
 +
  <font color="#0000FF">print</font> <font color="#FF0000">"File Sfile does not exist!"</font>;
 +
<font color="#0000FF">endif</font>;
  
endif;
 
 
[[Робота з файлами в PHP]]
 
[[Робота з файлами в PHP]]
  

Поточна версія на 11:13, 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 перераховані деякі значення, що визначають режим відкриття файлу.


Таблиця 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