﻿
<h1 class=p1>Открытие файлов</h1>
<br>
<br>

<p class=text><b>Файл</b> представляет собой последовательность байтов, хранящуюся на каком-либо физическом носителе информации. Каждый файл имеет абсолютный путь, по которому определяется его местонахождение. В качестве разделителя пути в Windows может использоваться как прямой (/), так и обратный (\) слеш. В других операционных системах используется только прямой слеш.</p>
<p class=text>Открытие файлов в файловой системе сервера производится при помощи функции <b>fopen</b>:</p>
<blockquote><pre>
  <em class=gr>int</em> <b>fopen</b>(<em class=gr>string</em> <b>filename</b>, <em class=gr>string</em> <b>mode</b> <em class=gr>[, int</em> <b>use_include_path</b><em class=gr>])</em>
</pre></blockquote>
<p class=text>Первый аргумент <b>filename</b> - имя файла или абсолютный путь к нему. Если абсолютный путь не указывается, то файл должен находится в текущем каталоге.</p>
<p class=text>Второй аргумент <b>mode</b> говорит о том, для каких действий открывается файл и может принимать следующие значения:</p>
  <ul>
    <li><em class=gr>r</em> (Открыть файл только для чтения; после открытия указатель файла устанавливается в начало файла);</li>
    <li><em class=gr>r+</em> (Открыть файл для чтения и записи; после открытия указатель файла устанавливается в начало файла);</li>
    <li><em class=gr>w</em> (Создать новый пустой файл только для записи; если файл с таким именем уже есть вся информация в нем уничтожается);</li>
    <li><em class=gr>w+</em> (Создать новый пустой файл для чтения записи; если файл с таким именем уже есть вся информация в нем уничтожается);</li>
    <li><em class=gr>a</em> (Открыть файл для дозаписи; данные будут записываться в конец файла);</li>
    <li><em class=gr>a+</em> (Открыть файл для дозаписи и чтения данных; данные будут записываться в конец файла);</li>
    <li><em class=gr>b</em> (Флаг, указывающий на работу (чтение и запись) с двоичным файлом; указывается только в Windows).</li>
  </ul>
<p class=text>Третий необязательный аргумент <b>use_include_path</b> определяет должны ли искаться файлы в каталоге <b>include_path</b>. (Параметр <b>include_path</b> устанавливается в файле php.ini).</p>
<p class=text>В случае удачного открытия файла, функция <em class=gr>fopen</em> возвращает дескриптор файла, в случае неудачи - <em class=gr>false</em>. <b>Дескриптор файла</b> представляет собой указатель на открытый файл, который используется операционной системой для поддержки операций с этим файлом. Возвращенный функцией дескриптор файла необходимо затем указывать во всех функциях, которые в дальнейшем будут работать с этим файлом.</p>
<p class=text>Код, приведенный ниже, открывает файл C:/WWW/HTML/file.txt для чтения:</p>
<blockquote><pre>
<em class=red>&lt;?</em>
  <b>$file</b> <em class=gr>=</em> <b>fopen</b><em class=gr>(</em>"c:/www/html/file.txt","r"<em class=gr>);
  if(</em>!<b>file</b><em class=gr>)
    {
      echo(</em>"Ошибка открытия файла"<em class=gr>);
    }</em>
<em class=red>?&gt;</em>
</pre></blockquote>
<p class=text>Открытие двоичного файла, к примеру, рисунка происходит таким же образом, только с флагом <b>b</b>:</p>
<blockquote><pre>
<em class=red>&lt;?</em>
  <b>$file</b> <em class=gr>=</em> <b>fopen</b><em class=gr>(</em>"c:/www/html/river.jpg","rb"<em class=gr>);
  if(</em>!<b>file</b><em class=gr>)
    {
      echo(</em>"Ошибка открытия файла"<em class=gr>);
    }</em>
<em class=red>?&gt;</em>
</pre></blockquote>