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 байтов, если значение 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!

?>

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

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