fwrite

(PHP 4, PHP 5, PHP 7, PHP 8)

fwriteБинарно-безопасная запись в файл

Описание

fwrite(resource $stream, string $data, ?int $length = null): int|false

fwrite() записывает содержимое data в файловый поток stream.

Список параметров

stream

Указатель (resource) на файл, обычно создаваемый с помощью функции fopen().

data

Записываемая строка.

length

Если параметр length является целым числом (int), запись остановится после того, как length байтов будут записаны или будет достигнут конец строки 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().

Замечание:

Если дескриптор stream был открыт функцией fopen() в режиме "добавление в конец", то вызовы fwrite() будут атомарными (за исключением случая, если размер data превысит размер блока файловой системы, на некоторых платформах, и пока файл хранится на локальной файловой системе). То есть нет необходимости блокировать ресурс с помощью flock() перед вызовом fwrite(), и все данные будут записаны без прерываний.

Замечание:

При повторной записи в файловый указатель, данные будут добавлены в конец содержимого файла:

<?php
$fp
= fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);

// содержимое 'data.txt' теперь 123, а не 23!
?>

Смотрите также

  • fread() - Бинарно-безопасное чтение файла
  • fopen() - Открывает файл или URL
  • fsockopen() - Открывает соединение с интернет-сокетом или доменным сокетом Unix
  • popen() - Открывает файловый указатель процесса
  • file_get_contents() - Читает содержимое файла в строку
  • pack() - Упаковать данные в бинарную строку