|
|
(не показано 32 проміжні версії 2 учасників) |
Рядок 1: |
Рядок 1: |
− | == '''Перевірка існування та розміру файлу''' ==
| + | [[Перевірка існування та розміру файлу]]<br> |
| + | [[Відкриття та закриття файлів]]<br> |
| + | [[Запис у файл]]<br> |
| + | [[Читання з файлу]]<br> |
| + | [[Читання файлу в масив]]<br> |
| + | [[Перенаправлення файлу в стандартний вихідний потік]]<br> |
| | | |
− | Перш ніж намагатися працювати з файлом, бажано переконатися в тому, що він існує. Для вирішення цього завдання зазвичай використовуються дві функції:<br/>
| + | [[Приклади програм для роботи з файлами]] |
− | ''file_exists () і is_file ()''.<br/><br/>
| + | |
− | '''file_exists ().'''<br/>
| + | |
− | Функція filе_ехists () перевіряє, чи існує заданий файл. Якщо файл існує, функція повертає TRUE, в іншому випадку повертається FALSE. Синтаксис функції file_exists ():<br/>
| + | |
− | bool file_exists (string файл)<br/>
| + | |
− | Приклад перевірки існування файлу:<br/>
| + | |
− | ''if (! file_exists ($ filename)):<br/>
| + | |
− | print "File $ filename does not exist!";<br/>
| + | |
− | endif:''<br/><br/>
| + | |
− | '''is_file ()'''<br/>
| + | |
− | Функція is_file () перевіряє існування заданого файлу і можливість виконання з ним операцій читання / запису. По суті, is_file () являє собою більш надійну версію file_exists (), яка перевіряє не тільки факт існування файлу, але і те, чи підтримує він читання і запис даних:<br/>
| + | |
− | ''bool is_file (string файл)''<br/>
| + | |
− | Наступний приклад показує, як переконатися в існуванні файлу і можливості виконання операцій з ним:<br/>
| + | |
− | ''$File = "somefile.txt";<br/>
| + | |
− | if (is_file ($file)):<br/>
| + | |
− | print "The file $ file is valid and exists!";<br/>
| + | |
− | else:<br/>
| + | |
− | print "The file $ file does not exist or it is not a valid file!";<br/>
| + | |
− | endif:''<br/>
| + | |
− | Переконавшись у тому, що потрібний файл існує, і з ним можна виконувати різні операції читання / запису, можна переходити до наступного кроку - відкриття файлу.<br/><br/>
| + | |
− | '''filesize ()'''<br/>
| + | |
− | Функція filesize () повертає розмір (в байтах) файлу з заданим ім'ям або FALSE в разі помилки. Синтаксис функції filesize ():<br/>
| + | |
− | ''int filesize (string ім'я_файлу)''<br/>
| + | |
− | Припустимо, ви хочете визначити розмір файлу pastry.txt. Для отримання потрібної інформації можна скористатися функцією filesize ():<br/>
| + | |
− | ''$Fs = filesize ("pastry.txt"); print "Pastry.txt is $Fs bytes.";''<br/>
| + | |
− | Виводиться наступний результат:<br/>
| + | |
− | ''Pastry.txt is 179 bytes.''<br/>
| + | |
− | Перш ніж виконувати операції з файлом, необхідно відкрити його і пов'язати з файловим маніпулятором, а після завершення роботи з файлом його слід закрити.<br/><br/>
| + | |
| | | |
| | | |
| + | [[Інтернет-програмування]] |
| | | |
| + | [[category:Інтернет-програмування|*]] |
| | | |
− | | + | [[category:Навчальні проекти]] |
− | | + | |
− | | + | |
− | == '''Відкриття та закриття файлів''' ==
| + | |
− | | + | |
− | Перш ніж виконувати операції вводу / виводу з файлом, необхідно відкрити його функцією fopen ().<br/>
| + | |
− | '''fopen ()<br/>'''
| + | |
− | Функція fopen () відкриває файл (якщо він існує) і повертає ціле число - так званий файловий маніпулятор (file handle). Синтаксис функції fopen ():<br/>
| + | |
− | ''int fopen (string файл, string режим [, int включення_шляху])<br/>''
| + | |
− | Відкриває файл може знаходитися в локальній файловій системі, існувати у вигляді стандартного потоку вводу / виводу або представляти файл у віддаленій системі, що приймається засобами HTTP або FTP.<br/>
| + | |
− | Параметр файл може здаватися в декількох формах, перерахованих нижче:<br/>
| + | |
− | • Якщо параметр містить ім'я локального файлу, функція fopen () відкриває цей файл і повертає маніпулятор.<br/>
| + | |
− | • Якщо параметр заданий у вигляді php: / / stdin, php: / / stdout або php: / / stderr, відкривається відповідний стандартний потік вводу / виводу.<br/>
| + | |
− | • Якщо параметр починається з префікса http://, функція відкриває підключення HTTP до сервера і повертає маніпулятор для зазначеного файлу.<br/>
| + | |
− | • Якщо параметр починається з префікса ftp://, функція відкриває підключення FTP до сервера і повертає маніпулятор для зазначеного файлу. У цьому випадку слід звернути особливу увагу на дві обставини: якщо сервер не підтримує пасивний режим FTP, виклик fopen () завершується невдачею. Більш того, FTP-файли відкриваються або для читання, або для запису.<br/>
| + | |
− | При роботі в пасивному режимі сервер &!!&!!&!!&&&!!&&&&&&&ЯР&&&&&!!&&&!!&!!&!!&& очікує підключення з боку клієнтів. При роботі в активному режимі сервер сам встановлює з'єднання з клієнтом. За замовчуванням звичайно використовується активний режим.<br/>
| + | |
− | Параметр режим визначає можливість виконання читання і запису у файл. У табл. 1 перераховані деякі значення, що визначають режим відкриття файлу.<br/>
| + | |
− | | + | |
− | | + | |
− | <TABLE BORDER = 1 align = center bordercolor = darkblue>
| + | |
− | <CAPTION ALIGN = Top> Таблиця 1. Режими відкриття файлу </CAPTION>
| + | |
− | | + | |
− | <TR>
| + | |
− | <TH align = center> Режим </TH>
| + | |
− | <TH align = center> Опис </TH>
| + | |
− | </TR>
| + | |
− | <TR>
| + | |
− | <TD align = center> r </TD>
| + | |
− | <TD> Файл відкривається тільки для читання. Якщо файлу не існує, виклик реєструє помилку. Після успішного відкриття вказівник файлу встановлюється на його перший байт, тобто на початок. </TD>
| + | |
− | </TR>
| + | |
− | <TR>
| + | |
− | <TD align = center> r + </TD>
| + | |
− | <TD> Файл відкривається одночасно для читання та запису. Вказівник поточної позиції встановлюється в початок файлу, тобто на перший байт. Якщо файлу не існує повертається false. Якщо в момент запису вказівник файлу встановлено приміром в середину файлу, то дані запишуться прямо поверх існуючих, а не розсунуть їх, при необхідності збільшивши розмір файлу. </TD>
| + | |
− | </TR>
| + | |
− | <TR>
| + | |
− | <TD align = center> w </TD>
| + | |
− | <TD> Тільки запис. Покажчик поточної позиції встановлюється в початок файлу, а весь вміст файлу знищується. Якщо файл не існує, функція намагається створити його. </TD>
| + | |
− | </TR>
| + | |
− | <TR>
| + | |
− | <TD align = center> w + </TD>
| + | |
− | <TD> Читання і запис. Покажчик поточної позиції встановлюється в початок файлу, а весь вміст файлу знищується. Якщо файл не існує, функція намагається створити його. </TD>
| + | |
− | </TR>
| + | |
− | <TR>
| + | |
− | <TD align = center> a </TD>
| + | |
− | <TD> Відкриває існуючий файл тільки для запису. Покажчик поточної позиції встановлюється в кінець файлу. Якщо файл не існує, функція намагається створити його. </TD>
| + | |
− | </TR>
| + | |
− | <TR>
| + | |
− | <TD align = center> a + </TD>
| + | |
− | <TD> Відкриває файл для читання та запису. Покажчик поточної позиції встановлюється в кінець файлу, при цьому вміст файлу не знищується. Якщо файл не існує, функція створює його. Ця функція є корисною, якщо потрібно дописати в файл, але не відомо, чи існує файл. </TD>
| + | |
− | </TR>
| + | |
− | </TABLE>
| + | |
− | | + | |
− | | + | |
− | | + | |
− | | + | |
− | Якщо необов'язковий третій параметр включення_шляху дорівнює 1, то шлях до файлу визначається по відношенню до каталогу включення файл, вказаною у файлі php.<br/>
| + | |
− | Нижче наведено приклад відкриття файлу функцією fopen (). Виклик die (), який використовується у поєднанні з fopen (), забезпечує вивід повідомлення про помилку в тому випадку, якщо відкрити файл не вдасться:<br/>
| + | |
− | ''$File = "userdata.txt"; / / Певний файл<br/>
| + | |
− | $Fh = fopen ($ file, "a +") or die ("File ($file) does not exist!");<br/>''
| + | |
− | Наступний фрагмент відкриває підключення до сайту PHP (http://www.php.net):<br/>
| + | |
− | ''$Site = "http://www.php.net": / / Сервер, доступний через HTTP<br/>
| + | |
− | $Sh = fopen ($site., "R"); / / Зв'язати маніпулятор з індексного сторінкою Php.net<br/>
| + | |
− | ''Після завершення роботи файл завжди слід закривати функцією fclose ().<br/>
| + | |
− | '''fclose ()<br/><br/>'''
| + | |
− | Функція fclose () закриває файл із заданим маніпулятором. При успішному закриття повертається TRUE, при невдачі - FALSE. Синтаксис функції fclose ():<br/>
| + | |
− | ''int fclose (int маніпулятор)<br/>''
| + | |
− | Функція fclose () успішно закриває лише ті файли, які були раніше відкриті функціями fopen () або fsockopen (). Приклад закриття файлу:<br/>
| + | |
− | ''$File = "userdata.txt";<br/>
| + | |
− | if (file_exists ($file)):<br/>
| + | |
− | $Fh = fopen ($file, "r");<br/>
| + | |
− | / / Виконати операції з файлом<br/>
| + | |
− | fclose ($fh);<br/>
| + | |
− | else:<br/>
| + | |
− | print "File Sfile does not exist!";<br/>
| + | |
− | endif;<br/>''<br/><br/>
| + | |
− | | + | |
− | | + | |
− | [[Як створити новий файл і записати в нього щось?]]<br>
| + | |
− | [[Як прочитати вміст текстового файлу цілком?]]<br>
| + | |
− | [[Як прочитати вміст текстового файлу порядково?]]<br>
| + | |
− | [[Як додати інформацію в початок файлу?]]<br>
| + | |
− | [[Як видалити рядок з файлу?]]<br>
| + | |
− | [[Як надіслати файл користувачеві?]]<br>
| + | |
− | [[Як отримати масив файлів у каталозі з певним розширенням?]]<br>
| + | |
− | [[Як вивести випадкову рядок з файлу?]]<br>
| + | |
− | [[Як записати файл у певному кодуванні?]]<br>
| + | |
− | [[Як відредагувати певну рядок у файлі?]]<br>
| + | |
− | [[Як "обнулити" (очистити) вміст файлу?]]<br>
| + | |
− | | + | |
− | | + | |
− | Как создать новый файл и записать в него что-то?
| + | |
− | Как прочитать содержимое текстового файла целиком?
| + | |
− | Как прочитать содержимое текстового файла построчно?
| + | |
− | Как добавить информацию в начало файла?
| + | |
− | Как удалить строчку из файла?
| + | |
− | Как послать файл пользователю?
| + | |
− | Как получить массив файлов в каталоге с определенным расширением?
| + | |
− | Как вывести случайную строку из файла?
| + | |
− | Как записать файл в определенной кодировке?
| + | |
− | Как отредактировать определенную строчку в файле?
| + | |
− | Как "обнулить" (очистить) содержимое файла?
| + | |