PHP - част 9 (Работа с файлове)
fix3d трудност:

видян:
11385
Ако преди това сте работили с
други езици за програмиране, като С или С++, може би си спомняте, че работата с
файлове може да се раздели на следните етапи:
Отваряне на файл. Зададения файл се отваря. Ако файла не съществува той се
създава.
Обработка на файла. След като файла е бил отворен, той е
готов за обработка. Може да четете данните от файла, да записвате в него, като
започнете отначало, или да добавите новите данни към вече
съществуващите.
Затваряне на файл. След като сте свършили работата си
с файла, трябва да го затворите
PHP предлага множество функции за работа
с файлове, които можете да използвате, за да запишете данни от Web страница във
файл, да извлечете данните от файл в Web страница или просто да промените или да
добавите данни от вашата Web страница във файл. Някой от най често използваните
файлови операции са:
Проверка за съществуването на файл
Отваряне на
файл
Четене от файл
Запис във файл
Нека да разгледаме тези
операции подробно
Проверка за съществуването на файл
Преди да
извършите операция с даден файл, често ще ви се налага да проверите дали файлът
съществува или не. За целта можете да използвате функцията file_exists().
Функцията file_exists() връща стойност True ако зададения файл съществува, или
стойност False ако не съществува. Функцията file_exists() е със следния
синтаксис:
bool file_exists(string име_на_файл);
Както се вижда от
горния синтаксис, функцията file_exists() приема само един аргумент -
име_на_файл, който задава името на файла, за чието съществуване се
проверява.
Разгледайте следния код за да разберете как се използва
функцията file_exists().
<?php
if (!(file_exists("data.dat"))) {
echo "Файлът
съществува"
}
else {
echo "Файлът не
съществува"
}
?> |
В горния код
наличието на файла data.dat се проверява с реда if (!(file_exists("data.dat"))).
Както си спомняте от предишните уроци, операторът ! обръща резултатът върнат от
извикването file_exists("data.dat").
Отваряне на файл
За да
отворите файл в PHP трябва да използвате функцията fopen(). Тази функция може да
отвори или файл или URL адрес. Оттук следва, че файлът може да бъде както
локален, така и отдалечен. Функцията fopen() извиква поне два аргумента.
Синтаксисът на функцията fopen() е следният:
int fopen(string
име_на_файл, string режим, int път);
В горния синтаксис аргумента
име_на_файл задава името на файла, който трябва да се отвори. Ако стойността на
аргумента име_на_файл започва с http://, тогава означава, че файлът се намира на
отдалечен Web сървар и за да се отвори файлът трябва да се установи HTTP 1.0
сесия със зададения сървър. Аналогично, ако аргументът име_на_файл започва с
FTP:// , зададения файл трябва да се свали от FTP сървър след постановяването на
FTP сесия със зададения сървър. Ако стойността на аргумента име_на_файл започва
с php://stdin, php://stdout или с php://stderr, се отваря съответния стандартен
входно изходен поток. Обаче, ако стойността на аргумента не започва с никой от
тези префикси, се приема, че зададения файл е локален , и PHP го търси във
файловата система на текущия компютър.
Вторият аргумент mode(режим)
задава, дали файлът се отваря за четене , за запис или за добавяне. Аргументът
режим, може да приема една от следните стойности:
r Файлът се
отваря само за четене
r+ Файлът се отваря за четене и запис,
текущата позиция е началото на файла
w Файлът се отваря само за
запис. Ако в него е имало някакви данни, те ще бъдат загубени.
Ако файлът не
съществува, се създава нов файл.
w+ Файлът се птваря за четене и
запис. Ако в него е имало някакви данни, те ще бъдат загубени.
Ако файлът не
съществува, се създава нов файл.
а Файлът се отваря за добавяне на
данни към към съществуващите в него. Ако файлът не съществува
се създава нов
файл.
а+ Файлът се отваря за четене и за добавяне на данни. Ако
файлът съдържа данни, новите данни
ще се запишат в края му. Ако файлът не
съществува, се създава нов файл.
Третият аргумент include_pat (път) не е
задължителен и се използва ако искате да търсите файла в пътя, зададен от този
аргумент.
Следващият код демонстрира използването на функцията fopen().
<?php
if (!(file_exists("data.dat"))) {
$fp =
fopen("data.dat","w+");
}
else {
// Ако файлът съществува, данните
ще се добавят
$fp =
fopen("data.dat","a");
}
?> |
В
горния код първо се прави проверка за съществуването на файла data.dat Ако
файлът не съществува, се създава нов файл с име data.dat чрез режима w+. Това
означава, че файлът е готов, както за четене, така и за запис. От друга страна,
ако изразът if (file_exist("data.dat")) върне стойност True ( тоест ако файлът
data.dat съществува), файлът се отваря за добавяне на данни към
него.
Можете да използвате знака @ пред функцията fopen(), както и пред
всяка друга системна функция в PHP - например, @fopen("data.dat"),"w+");.
Използването на символа @ в началото на функцията ще ви помогне да избегнете
стандартните предупреждения на компилатора. Обаче трябва да се погрижите за
предоставянето на собствени ( при изпълнението на програмиста ) съобщения за
грешки, в случай, че функцията не успее да свърши задачата
си.