Приднестровская поддержка XOOPS
Создание файла, запись в файл, вывод содержимого файла в список
Рассмотрим основные функции для работы с файлами.
□ fopen(<Путь к файлу>, <Режим>[, <Путь поиска>[, <HTTP заголовки>]]) открывает файл и возвращает дескриптор (идентификатор). Параметр <Режим> может принимать следующие значения:
□ flock(<Дескриптор>, <Режим>[, <Результат операции>]) позволяет блокировать файл или снять блокировку. Параметр <Режим> может принимать следующие значения:
□ fread(<Дескриптор>, <Длина в байтах>) позволяет прочитать из файла строку указанной длины. Если функции не удалось прочесть заданное число байтов, то она возвратит то, что удалось прочитать.
□ fgets(<Дескриптор>[, <Длина в байтах>]) позволяет считывать из файла по одной строке за раз. Считывание будет выполняться до тех пор, пока не встретится символ новой строки (\n), символ конца файла или из файла не будет прочитано указанное количество байт.
□ file(<Путь к файлу>[, <Режим>[, <HTTP-заголовки>]]) читает весь файл в массив, каждый элемент которого будет равен одной строке, прочитанной из файла. В параметре <Режим> могут быть указаны следующие значения:
• FILE_SKIP_EMPTY_LINES — игнорировать пустые строки.
□ readfile(<Путь к файлу>[, <true | false>[, <HTTP-заголовки>]])
открывает файл и выводит все его содержимое в окно Web-браузера. Если во втором параметре указано значение true, то поиск файла будет осуществлен в каталогах, перечисленных в директиве include_path.
□ file_get_contents(<Путь к файлу>[, <Флаг>[, <HTTP-заголовки>[, <Начальная позиция>[, <Максимальная длина>]]]]) возвращает содержимое файла в виде строки. В отличие от функции readfile() не выводит содержимое файла в окно Web-браузера. Если в параметре <Флаг> указано значение FILE_USE_INCLUDE_PATH, то поиск файла будет осуществлен в каталогах, перечисленных в директиве include_path.
□ fwrite(<Дескриптор>, <Строка>) записывает данные в файл.
□ fflush(<Дескриптор>) записывает изменения из буфера ввода/вывода на диск. Используется при обработке файлов большого объема, так как обычно запись на диск производится только при закрытии файла.
□ fclose(<Дескриптор>) закрывает файл.
□ file_put_contents() записывает данные в файл. Если файл не существует, то он будет создан. Если файл существует, то по умолчанию он будет перезаписан. Для записи в конец файла следует указать флаг FILE_APPEND. Вызов функции эквивалентен последовательности вызовов функций fopen(), fwrite() и fclose(). Формат функции:
file_put_contents(<Путь к файлу>, <Данные>[, <Флаг>[, <HTTP-заголовки>]])
В параметре <Флаг> могут быть указаны следующие значения (или их комбинация):
Пример:
// Перезапись файла
file_put_contents('test.txt', 'Эти данные будут записаны');
// Добавление в конец
file_put_contents('test.txt', "\nА эти данные будут добавлены",
FILE_APPEND);
Для примера создадим файл file.txt и запишем в него пять E-mail адресов по одному на строчке (листинг 41).
Листинг 41. Создание файла и запись в него
<?php
@$file = fopen("file.txt", "a+") or die("Ошибка");
$mail = "mail1@site.ru\nmail2@site.ru\nmail3@site.ru\n";
$mail .= "mail4@site.ru\nmail5@site.ru";
flock($file, LOCK_EX);
fwrite($file, $mail);
flock($file, LOCK_UN);
fclose($file);
echo "Файл создан";
?>
Если в процессе создания файла возникнет ошибка, то она будет подавлена оператором @, а в окне Web-браузера будет выведено сообщение "Ошибка". При этом дальнейшая обработка файла будет остановлена.
Теперь добавим новую запись в конец файла (листинг 42).
Листинг 42. Добавление новой записи в конец файла
<?php
@$file = fopen("file.txt", "a+") or die("Ошибка");
$mail = "\nmail6@site.ru";
flock($file, LOCK_EX);
fwrite($file, $mail);
flock($file, LOCK_UN);
fclose($file);
echo "Операция произведена";
?>
А теперь выведем содержимое файла в список (листинг 43).
Листинг 43. Вывод содержимого файла в список
<?php
@$file = fopen("file.txt", "r");
if ($file) {
flock($file, LOCK_SH);
echo "<select>\n";
while(!feof($file)) {
echo '<option>', trim(fgets($file, 200)), '</option>';
}
echo "</select>\n";
flock($file, LOCK_UN);
fclose($file);
}
else {
echo "Не удалось открыть файл";
}
?>
Отправитель | Нити |
---|
3 пользователь(ей) активно (1 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 3 далее... |