Операторы для работы с файлом

}

Очень часто используется специальный оператор, завершающий работу сценария, если файл не может быть открыт:

($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”)) //открыт для записи

Наши рекомендации