В языке программирования PHP есть функции для работы с файлми.
В этой статье мы рассмотрим их...
Включение файлов в документ
Иногда нам приходится часто изменяемые элементы программы или самой страницы
выносить в отдельный файл, а потом его динамически включать в документ... Это
может быть список часто изменяемых переменных или, например, меню. Включить эти
файлы нам поможет функция include(). Она имеет единственный аргумент,
который должен являться путем к необходимому (включаемому) документу.
Пример
Выносим меню нашего сайта в отдельный файл. Назовем его
'menu.txt' и разместим в той же папке, что и index.php, а вместо кода меню
вводим "<? include ("menu.txt") ?>". Работает?
Замечательно!
Проверка существования файла
Часто программам будет необходимо проверить, существует ли необходимый файл.
Для этого придумана функция file_exists(). Функция возвращает true, если
файл существует и false, если нет.
Пример
<? if (file_exists("file.txt"))
{...Дальнейшие
действия...}
else
{echo ("File.txt не существует!")} ?><
Создаем и удаляем файлы
Для создания файлов есть функция
touch().
Пример
<? touch("file.txt") ?>
А для удаления файлов предусмотрена функция
unlink().
Пример
<? unlink("file.txt")
?>
Чтение, запись и добавление в файл
Для открытия файла существует функция fopen(). Ей передаются 2
аргумента. Первый - путь к файлу, а второй - режим доступа. Режимов доступа есть
3. Первый обозначается "r" - открывается файл исключительно для чтения, но не
для записи, второй "w" - запись файл (!!!при записи вся информация в файле
сотрется и новые данные будут записаны в начало уже пустого файла!!!). Если же
использовать режим добавления в конец файла, обозначаемый буквой "a" данные
будут записываться в конец файла, а текущее содержимое останется.
Лучше открытый файл присваивать переменной, которая потом будет указателем на
файл.
Примеры
Открытие файла для чтения - $file=fopen("file.txt",
"r")
открытие файла для записи - $file=fopen("file.txt",
"w")
открытия файла для добавления данных в конец -
$file=fopen("file.txt", "a")
После работы с файлом его необходимо
закрыть, иначе все измененное процессом в файле не сохранится:
<?
fclose($file) ?> //$file - указатель на файл
Чтение строк из файла
Для чтения строк из файла существует функция fgets(). У неё есть 2
аргумента. Первый - указатель на файл, второй - максимальное количество
символов, которое можно прочитать до того, как встретится конец файла или строки
(обычно это "1024").
Если вы хотите прочитать весь файл и вывести его содержимое в броузер, Вам
понадобится функция feof($file), где $file - указатель на файл. Она
возвращает true при достижении конца файла и false в противном случае.
Итак, чтобы прочитать весь документ, пользуемся кодом:
<? $file= fopen ("file.txt", "r");
while (! feof($file)
)
{
$text = fgets ($file, 1024);
echo ($text)
}
?>
Если Вы хотите прочитать определенное количесво символов пользуйтесь функцией
fread().
Пример:
<? $file= fopen ("file.txt", "r");
$text =
fread($file, 25);
echo ($text) ?>
Для перемещения по файлу (а точнее, смещения) предусмотрена функция
fseek(указатель на файл, количество символов, на которое нужно отступить от
начала файла).
<? fseek($file, 80) ?>
Запись в файл
Для записи в файл пользуемся функциями fwrite() или fputs(),
которые ничем друг от друга не отличаются.
Пример:
fwrite ($file, "Ваш текст")
fputs ($file, "Ваш
текст").
Конечно, надо сначала открыть файл с соответствующим режимом доступа ("w" или
"a").
Блокируем файл...
Теперь появляется вопрос. А что если несколько процессов будут одновременно
записывать данные в файл? Да-да, плохо будет. Данные будут перемешаны в огромную
кучу и превратятся в обыкновенный информационный мусор, не поддающийся
расшифровке. К счастью, на этот случай существует блокировка файла. Есть 2 вида
блокировки - частичная и полная. Частичная запрещает другим процессам писать в
файл данные, но не запрещает читать их, а полная запрещает и чтение, и
запись.
За блокировку отвечает функция flock(указатель на файл , вид
блокировки). Вид блокировки обозначается цифрой (1 - частичная, 2 - полная).
Чтобы разблокировать файл пользуйесь функцией flock, но вид блокировки поставьте
"3".
Удачи Вам и Вашим программам ;)!