Операторы для работы с файлом
}
Очень часто используется специальный оператор, завершающий работу сценария, если файл не может быть открыт:
($fp = fopen(“путь”, “режим”))
or die(“Невозможно открыть файл”);
Если функция fopen() возвращает значение true, то остальная часть этого выражения не анализируется, и функция die(), которая выводит сообщение в окно браузера и завершает работу сценария, не будет вызвана. В противном случае анализируется правый аргумент операции or и выполняется функция die():
($fp = fopen(“D:/User/my_file.txt”, “wt”)) // по указанному
or die(“Невозможно открыть файл”); // пути создан //текстовый файл
// my_file.txt и открыт для записи
Если файл с таким именем уже существовал, то он очищается (из него удаляется информация).
Запись (вывод) в файл осуществляется функциями fwrite() или fputs():
fwrite($fp, $string, $length);
$fp – дескриптор файла,
$string - записываемая строка,
$length - необязательный параметр – максимальное количество байтов, которое требуется записать за один раз.
При передаче этого параметра функция fwrite() будет записывать строку $string в файл, указанный параметром $fp, пока не встретит конец строки \n или не запишет столько байтов, сколько указано в третьем параметре $length. Функция fwrite() возвращает количество записанных байтов или false в случае ошибки:
($fp = fopen(“D:/User/my_file.txt”, “wt”)) //открыт для записи
Or die(“Невозможно открыть файл”);
$str=”Это первая строка\n”; // строка заканчивается символом \n
fwrite($fp, $str);
fclose($fp); // закрытие файла
($fp = fopen(“D:/User/my_file.txt”, “at”)) //открыт для добавления
or die(“Невозможно открыть файл”); //в конец файла
$str=”Это вторая строка\n”;
fputs($fp, $str);
fclose($fp); // закрытие файла
Внимание! Каждая строка, записываемая в файл, должна заканчиваться ESC-последовательностью “\n”.
Пример: записать в файл my_file.txt построчно значения элементов следующего массива my_mass34, разделяя их пробелами :
1 2 3 4
5 6 7 8
9 10 11 12
Программа:
<?php
$n = 3;
$m = 4;
$my_mass = array
(
Array (1,2,3,4),
Array (5,6,7,8),
Array (9,10,11,12)
);
($fp = fopen(“D:/User/my_file.txt”, “wt”))//открыт для записи
or die(“Невозможно открыть файл”);
for ($i=0; $i<$n; $i++)
{
for ($j=0; $j<$m; $j++)
{
$str = sprintf("%5d", $my_mass[$i][$j]);
fwrite($fp, $str);
echo $str;
}
fwrite($fp, “\n”); // записываем символ конца строки
echo “<BR>”;
}
fclose($fp); // закрытие файла
?>
Структура файла my_file.txt:
1 2 3 4
5 6 7 8
9 10 11 12
Внимание! При записи чисел в текстовый файл оставлять между ними хотя бы по одному пробелу!
Для записи данных в файл используется еще одна функция:
file_put_contents(“путь”, “строка”);
Она позволяет записать данные в файл без его открытия и последующего закрытия. Если
нужно добавить данные в конец существующего текстового файла, то в ней используется
еще и третий аргумент FILE_APPEND:
file_put_contents(“путь”, “строка”, FILE_APPEND);
Перед чтением данных из файла его необходимо открыть для чтения:
($fp = fopen(“D:/User/my_file.txt”, “rt”)) // по указанному пути
or die(“Невозможно открыть файл”); // текстовый файл
// my_file.txt открыт для чтения
Если файл не найден, то значение дескриптора $fp будет равно false, будет выдано сообщение “Невозможно открыть файл”, и сценарий будет закончен.
Построчное чтение (ввод) из файла осуществляется функцией fgets():
fgets($fp, $length);
$fp – дескриптор файла,
$length - количество байтов, которое требуется прочитать.
При передаче этого параметра функция fgets() будет читать строку из файла, указанного параметром $fp, пока не встретит конец строки (\n), конец файла или не прочитает столько байтов, сколько указано в $length . Как правило, этот параметр всегда больше длины считываемой строки:
($fp = fopen(“D:/User/my_file.txt”, “wt”)) //открыт для записи
Or die(“Невозможно открыть файл”);
$str=”Это первая строка\n”;
fwrite($fp, $str);
$str=”Это вторая строка\n”;
fwrite($fp, $str);
$str=”Это третья строка\n”;
fwrite($fp, $str);
fclose($fp); // закрытие файла
($fp = fopen(“D:/User/my_file.txt”, “rt”)) //открыт для чтения
Or die(“Невозможно открыть файл”);
$str=fgets($fp, 64);
echo $str, "<BR>";
$str=fgets($fp, 64);
echo $str, "<BR>";
$str=fgets($fp, 64);
echo $str, "<BR>";
fclose($fp); // закрытие файла
На экран будет выведено:
Это первая строка
Это вторая строка
Это третья строка
Кроме построчного чтения данных из файла, можно читать файл блоками произвольной длины. Для этого используется функция:
fread($fp, $length);
$fp – дескриптор файла,
$length - количество байтов, которое требуется прочитать.
Она возвращает запрошенные данные, если только в процессе чтения не был достигнут конец файла (символы конца строки игнорируются):
($fp = fopen(“D:/User/my_file.txt”, “wt”)) //открыт для записи