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

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 122: Рядок 122:
 
''int fwrite (int маніпулятор, string мінлива [, int довжина])''<br/>
 
''int fwrite (int маніпулятор, string мінлива [, int довжина])''<br/>
 
Якщо при виконанні функції передається необов'язковий параметр довжина, запис зупиняється або після запису вказаної кількості символів, або при досягненні кінця рядка. Перевірка можливості запису у файл продемонстрована в наступному прикладі:<br/>
 
Якщо при виконанні функції передається необов'язковий параметр довжина, запис зупиняється або після запису вказаної кількості символів, або при досягненні кінця рядка. Перевірка можливості запису у файл продемонстрована в наступному прикладі:<br/>
''<?<br/>
+
''<?''<br/>
/ / Інформація про трафік на користувальницькому сайті<br/>
+
''/ / Інформація про трафік на користувальницькому сайті''<br/>
$ Data = "08:13:00 | 12:37:12 | 208.247.106.187 | Win98";<br/>
+
''$ Data = "08:13:00 | 12:37:12 | 208.247.106.187 | Win98";''<br/>
$ Filename = "somefile.txt";<br/>
+
''$ Filename = "somefile.txt";''<br/>
/ / Якщо файл існує і в нього можливий запис<br/>
+
''/ / Якщо файл існує і в нього можливий запис''<br/>
if (is_writeable ($ filename)):<br/>
+
''if (is_writeable ($ filename)):''<br/>
/ / Відкрити файл і встановити покажчик поточної позиції у кінець файлу<br/>
+
''/ / Відкрити файл і встановити покажчик поточної позиції у кінець файлу''<br/>
$ Fh = fopen ($ filename, "a +");<br/>
+
''$ Fh = fopen ($ filename, "a +");''<br/>
/ / Записати вміст $ data в файл<br/>
+
''/ / Записати вміст $ data в файл''<br/>
$ Success - fwrite ($ fh, $ data);<br/>
+
''$ Success - fwrite ($ fh, $ data);''<br/>
/ / Закрити файл<br/>
+
''/ / Закрити файл''<br/>
fclose ($ fh); else:<br/>
+
''fclose ($ fh); else:''<br/>
print "Could not open Sfilename for writing";<br/>
+
''print "Could not open Sfilename for writing";''<br/>
endif;<br/>
+
''endif;''<br/>
?>''<br/>
+
''?>''<br/>
 
Функція fputs () є псевдонімом fwrite () і може використовуватися всюди, де використовується fwrite ().<br/>
 
Функція fputs () є псевдонімом fwrite () і може використовуватися всюди, де використовується fwrite ().<br/>
 
'''fputs ()'''<br/>
 
'''fputs ()'''<br/>

Версія за 07:13, 23 квітня 2010

Перевірка існування та розміру файлу

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

file_exists ().
Функція filе_ехists () перевіряє, чи існує заданий файл. Якщо файл існує, функція повертає TRUE, в іншому випадку повертається FALSE. Синтаксис функції file_exists ():
bool file_exists (string файл)
Приклад перевірки існування файлу:
if (! file_exists ($ filename)):
print "File $ filename does not exist!";
endif:

is_file ()
Функція is_file () перевіряє існування заданого файлу і можливість виконання з ним операцій читання / запису. По суті, is_file () являє собою більш надійну версію file_exists (), яка перевіряє не тільки факт існування файлу, але і те, чи підтримує він читання і запис даних:
bool is_file (string файл)
Наступний приклад показує, як переконатися в існуванні файлу і можливості виконання операцій з ним:
$File = "somefile.txt";
if (is_file ($file)):
print "The file $ file is valid and exists!";
else:
print "The file $ file does not exist or it is not a valid file!";
endif:
Переконавшись у тому, що потрібний файл існує, і з ним можна виконувати різні операції читання / запису, можна переходити до наступного кроку - відкриття файлу.

filesize ()
Функція filesize () повертає розмір (в байтах) файлу з заданим ім'ям або FALSE в разі помилки. Синтаксис функції filesize ():
int filesize (string ім'я_файлу)
Припустимо, ви хочете визначити розмір файлу pastry.txt. Для отримання потрібної інформації можна скористатися функцією filesize ():
$Fs = filesize ("pastry.txt"); print "Pastry.txt is $Fs bytes.";
Виводиться наступний результат:
Pastry.txt is 179 bytes.
Перш ніж виконувати операції з файлом, необхідно відкрити його і пов'язати з файловим маніпулятором, а після завершення роботи з файлом його слід закрити.




Відкриття та закриття файлів

Перш ніж виконувати операції вводу / виводу з файлом, необхідно відкрити його функцією 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 + Відкриває файл для читання та запису. Покажчик поточної позиції встановлюється в кінець файлу, при цьому вміст файлу не знищується. Якщо файл не існує, функція створює його. Ця функція є корисною, якщо потрібно дописати в файл, але не відомо, чи існує файл.



Якщо необов'язковий третій параметр включення_шляху дорівнює 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;



Запис у файл

З відкритими файлами виконуються дві основні операції - читання і запис.
is_writeable ()
Функція is_writeable () дозволяє переконатися в тому, що файл існує і для нього дозволена операція запису. Можливість запису перевіряється як для файлу, так і для каталогу. Синтаксис функції is_writeable ():
bool is_writeable (string файл)
Одна важлива обставина: швидше за все, PHP буде працювати під ідентифікатором користувача, використовуваним web-сервером (як правило, «nobody»). Приклад використання is_writeable () наведено в описі функції fwrite ().
fwrite ()
Функція fwrite () записує вміст строкової змінної в файл, заданий файловим маніпулятором. Синтаксис функції fwrite ():
int fwrite (int маніпулятор, string мінлива [, int довжина])
Якщо при виконанні функції передається необов'язковий параметр довжина, запис зупиняється або після запису вказаної кількості символів, або при досягненні кінця рядка. Перевірка можливості запису у файл продемонстрована в наступному прикладі:
<?
/ / Інформація про трафік на користувальницькому сайті
$ Data = "08:13:00 | 12:37:12 | 208.247.106.187 | Win98";
$ Filename = "somefile.txt";
/ / Якщо файл існує і в нього можливий запис
if (is_writeable ($ filename)):
/ / Відкрити файл і встановити покажчик поточної позиції у кінець файлу
$ Fh = fopen ($ filename, "a +");
/ / Записати вміст $ data в файл
$ Success - fwrite ($ fh, $ data);
/ / Закрити файл
fclose ($ fh); else:
print "Could not open Sfilename for writing";
endif;
?>
Функція fputs () є псевдонімом fwrite () і може використовуватися всюди, де використовується fwrite ().
fputs ()
Функція fputs () є псевдонімом fwrite () і має точно такий же синтаксис. Синтаксис функції fputs ():
int fputs (int маніпулятор, string мінлива [, int довжина])











Як створити новий файл і записати в нього щось?
Як прочитати вміст текстового файлу цілком?
Як прочитати вміст текстового файлу порядково?
Як додати інформацію в початок файлу?
Як видалити рядок з файлу?
Як надіслати файл користувачеві?
Як отримати масив файлів у каталозі з певним розширенням?
Як вивести випадкову рядок з файлу?
Як записати файл у певному кодуванні?
Як відредагувати певну рядок у файлі?
Як "обнулити" (очистити) вміст файлу?

http://base.vingrad.ru/view/2843-Rabota-s-faylami-v-PHP-FAQ


Как создать новый файл и записать в него что-то? Как прочитать содержимое текстового файла целиком? Как прочитать содержимое текстового файла построчно? Как добавить информацию в начало файла? Как удалить строчку из файла? Как послать файл пользователю? Как получить массив файлов в каталоге с определенным расширением? Как вывести случайную строку из файла? Как записать файл в определенной кодировке? Как отредактировать определенную строчку в файле? Как "обнулить" (очистить) содержимое файла?