php-doc-en/reference/filesystem/functions/fread.xml
2006-01-30 15:48:53 +00:00

141 lines
4 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.21 $ -->
<!-- splitted from ./en/functions/filesystem.xml, last change in rev 1.25 -->
<refentry id="function.fread">
<refnamediv>
<refname>fread</refname>
<refpurpose>Binary-safe file read</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>string</type><methodname>fread</methodname>
<methodparam><type>resource</type><parameter>handle</parameter></methodparam>
<methodparam><type>int</type><parameter>length</parameter></methodparam>
</methodsynopsis>
<simpara>
<function>fread</function> reads up to
<parameter>length</parameter> bytes from the file pointer
referenced by <parameter>handle</parameter>. Reading stops when up to
<parameter>length</parameter> bytes have been read, EOF
(end of file) is reached, (for network streams) when a packet becomes
available, or (after opening userspace stream) when 8192 bytes have been read
whichever comes first.
</simpara>
<simpara>
Returns the read string or &false; in case of error.
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>
]]>
</programlisting>
</informalexample>
</para>
<warning>
<para>
On systems which differentiate between binary and text files
(i.e. Windows) the file must be opened with 'b' included in
<function>fopen</function> mode parameter.
</para>
</warning>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>
]]>
</programlisting>
</informalexample>
</para>
<warning>
<para>
When reading from anything that is not a regular local file, such as
streams returned when
reading <link linkend="features.remote-files">remote files</link> or from
<function>popen</function> and <function>fsockopen</function>, reading
will stop after a packet is available. This means that you should
collect the data together in chunks as shown in the examples below.
</para>
</warning>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// For PHP 5 and up
$handle = fopen("http://www.example.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$handle = fopen("http://www.example.com/", "rb");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
?>
]]>
</programlisting>
</informalexample>
</para>
<note>
<para>
If you just want to get the contents of a file into a string, use
<function>file_get_contents</function> as it has much better performance
than the code above.
</para>
</note>
<simpara>
See also <function>fwrite</function>, <function>fopen</function>,
<function>fsockopen</function>, <function>popen</function>,
<function>fgets</function>, <function>fgetss</function>,
<function>fscanf</function>, <function>file</function>, and
<function>fpassthru</function>.
</simpara>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->