(PHP 4, PHP 5, PHP 7, PHP 8)
fwrite — Записывает данные в файл в бинарно-безопасном режиме
Функция fwrite() записывает содержимое data
в файловый поток stream
.
stream
Ресурс (resource) указателя файловой системы, который обычно создают функцией fopen().
data
Строка, которую нужно записать.
length
Функция остановит запись через length
байтов, если значение length
— целое число (int),
или когда достигнет конца строки
data
, в зависимости от того, что произойдёт раньше.
Функция fwrite() возвращает количество
записанных байтов или false
, если возникла ошибка.
Функция fwrite() выдаёт ошибку
уровня E_WARNING
в случае ошибки.
Версия | Описание |
---|---|
8.0.0 |
Параметр length теперь принимает значение null .
|
Пример #1 Простой пример использования функции fwrite()
<?php
$filename = 'test.txt';
$somecontent = "Добавить это к файлу\n";
// Вначале убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {
// В примере мы открываем $filename в режиме «записи в конец».
// Поэтому смещение установлено в конец файла и
// значение переменной $somecontent допишется в конец файла при вызове функции fwrite().
if (!$fp = fopen($filename, 'a')) {
echo "Не могу открыть файл ($filename)";
exit;
}
// Записываем значение переменной $somecontent в открытый файл.
if (fwrite($fp, $somecontent) === FALSE) {
echo "Не могу произвести запись в файл ($filename)";
exit;
}
echo "Ура! Записали ($somecontent) в файл ($filename)";
fclose($fp);
} else {
echo "Файл $filename недоступен для записи";
}
?>
Замечание:
Запись в сетевой поток может прекратиться до завершения записи строки. Значение, которое возвращает функция fwrite(), можно проверить:
<?php
function fwrite_stream($fp, $string) {
for ($written = 0; $written < strlen($string); $written += $fwrite) {
$fwrite = fwrite($fp, substr($string, $written));
if ($fwrite === false) {
return $written;
}
}
return $written;
}
?>
Замечание:
В системах, которые различают двоичные и текстовые файлы (например, операционные системы Windows), файл должен быть открыт с флагом «b» в конце аргумента mode функции fopen().
Замечание:
Если функция fopen() открыла дескриптор
stream
в режиме «добавление в конец», вызовы функции fwrite() будут атомарными (если размерdata
не превышает размер блока файловой системы, на некоторых платформах, и пока файл хранится в локальной файловой системе). То есть не нужно блокировать ресурс функцией flock() перед вызовом функции fwrite(); данные будут записаны без прерываний.
Замечание:
При повторной записи в файловый указатель, данные будут добавлены в конец файла:
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// Теперь файл 'data.txt' содержит 123, а не 23!
?>