fwrite
Binary-safe file write
Description
intfalse fwrite(resource $stream
, string $data
, intnull $length
= null
)
fwrite writes the contents of
data
to the file stream pointed to by
stream
.
Parameters
-
stream
-
A file system pointer resource
that is typically created using fopen.
-
data
-
The string that is to be written.
-
length
-
If length
is an int, writing will stop
after length
bytes have been written or the
end of data
is reached, whichever comes first.
Return Values
fwrite returns the number of bytes
written, or false
on failure.
Errors/Exceptions
fwrite raises E_WARNING
on failure.
Examples
Example #1 A simple fwrite example
<?php
$filename = 'test.txt';
$somecontent = "Add this to the file\n";
// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {
// In our example we're opening $filename in append mode.
// The file pointer is at the bottom of the file hence
// that's where $somecontent will go when we fwrite() it.
if (!$fp = fopen($filename, 'a')) {
echo "Cannot open file ($filename)";
exit;
}
// Write $somecontent to our opened file.
if (fwrite($fp, $somecontent) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
echo "Success, wrote ($somecontent) to file ($filename)";
fclose($fp);
} else {
echo "The file $filename is not writable";
}
?>
Notes
Note:
Writing to a network stream may end before the whole string is written.
Return value of fwrite may be checked:
<?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;
}
?>
Note:
On systems which differentiate between binary and text files
(i.e. Windows) the file must be opened with 'b' included in
fopen mode parameter.
Note:
If stream
was fopened in
append mode, fwrites are atomic (unless the size of
data
exceeds the filesystem's block size, on some
platforms, and as long as the file is on a local filesystem). That is,
there is no need to flock a resource before calling
fwrite; all of the data will be written without
interruption.
Note:
If writing twice to the file pointer, then the data will be appended to
the end of the file content:
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// the content of 'data.txt' is now 123 and not 23!
?>
See Also
- fread
- fopen
- fsockopen
- popen
- file_get_contents
- pack