Работа с файлами в PHP. Запись в файл и чтение из файла.

Инструкцию include() можно использовать внутри цикла. В цикле include() выполняется при каждой итерации. Это можно использовать для включения нескольких файлов. Например:

for ($i=1; $i<=5; $i++)
  include("incfile{$i}.htm");

Определение имени включаемого файла и его загрузка производятся повторно при каждом вызове include(). Это означает, что если содержание включаемого файла с момента предыдущего вызова изменилось, то загрузится новое содержание.

Оператор include() также можно включать в тело условного оператора.

Несмотря на сходство по внешнему виду с функцией, include() функцией не является, а представляет собой специальную конструкцию языка.

Для указания что файл нужно подключать только один раз используется оператор include_once()

Анализ файлов

PHP содержит множество функций, дающих информацию о файлах. Наиболее употребимыми являются:

  • file_exists() – определяет существование файла. Например:
    if ( !file_exists( "aaa.php" ) )
      echo "Внимание! Файл aaa.php не найден!";
    
  • is_file() – определяет, является ли исследуемый объект файлом. Например:
    if ( is_file( "bbb.txt" ) )
      echo "Можете не сомневаться, bbb.txt - это файл";
    
  • is_dir() – определяет, является ли исследуемый объект каталогом. Например:
    if ( is_dir( "/tmp" ) )
      echo "Действительно, /tmp - это каталог";
    
  • is_readable() – определяет, доступен ли файл для чтения. Например:
    if ( is_readable( "db.dbf" ) )
      echo "db.dbf можно читать";
    
  • is_writable() – определяет, доступен ли файл для записи. Например:
    if ( is_writable( "db.dbf" ) )
      echo "В db.dbf писать можно";
  • filesize() – определяет размер файла в байтах.
  • filemtime() – определяет дату и время последнего изменения файла.
  • fileatime() – определяет дату и время последнего обращения к файлу.

Время возвращается в формате Unix, т.е. представляет собой количество секунд, прошедших после 1 января 1970 г. В примере 2 это число преобразуется в понятный для человека формат с помощью функции date( ).

Управление файлами

PHP содержит множество функций управления файлами. Наиболее употребимыми являются:

  • touch() – создает пустой файл с заданным именем. Если такой файл уже существует, то функция изменит дату модификации. Например:
    touch( "ex1.txt" );
    
  • copy() – копирует файл. Для копирования файлов в php применяется функция copy ($source, $result). Ей нужно передать лишь два параметра – источник $source и имя файла-копии – $result. Стоит отметить, что следует указывать полные адреса к файлам. Пример применения функции copy:
    <?php
    if (copy('Z:/home/site/www/file.txt', 'Z:/home/site/www/file2.txt'))
        { echo "Копирование успешно выполнено"; }
    else
        { echo "Ошибка при копировании"; }
    ?>
  • unlink() – удаляет заданный файл. Например:
    <?php
    if (unlink('filename.txt'))
        { echo "Файл удален"; }
    else
        { echo "Ошибка при удалении файла"; }
    ?>
  • fopen( ) – открывает локальный или удаленный файл и возвращает указатель на него. Указатель используется во всех операциях с содержимым файла. Аргументы: имя файла и режим открытия.
    r чтение. Указатель файла устанавливается на его начало
    r+ чтение и запись. Указатель файла устанавливается на его начало
    w запись. Указатель файла устанавливается на его начало. Все старое содержимое файла теряется. Если файл с указанным именем не существует, функция пытается его создать
    w+ чтение и запись. Указатель файла устанавливается на его начало. Все старое содержимое файла теряется. Если файл с указанным именем не существует, функция пытается его создать
    a запись. Указатель файла устанавливается на его конец. Если файл с указанным именем не существует, функция пытается его создать
    a+ чтение и запись. Указатель файла устанавливается на его конец. Если файл с указанным именем не существует, функция пытается его создать

    Например:

    $fp = fopen( "http://www.php.net/", "r" ); // для чтения
    $fp = fopen( "ex1.txt", "w" );             // для записи
    $fp = fopen( "ex2.txt", "a" );             // для добавления в конец

    Если открыть файл не удалось, то можно прервать выполнение программы. Например:

    $fp = fopen( "ex1.txt", "w" ) or die ( "Не удалось открыть файл" );
    
  • fclose() – закрывает файл. Аргумент: указатель файла, полученный ранее от функции fopen(). Например:
    fclose( $fp );
    
  • feof() – проверка конца файла. Аргумент: указатель файла.
  • fgetc() – чтение очередного символа из файла. Аргумент: указатель файла.
  • fgets() – чтение очередной строки файла. Аргументы: указатель файла и длина считываемой строки. Операция прекращается либо после считывания указанного количества символов, либо после обнаружения конца строки или файла.
  • fread() – общая функция чтения из файла. Аргументы: указатель файла и количество считываемых символов.
  • fseek() – отступ от начала файла. Аргументы: указатель файла и смещение.
  • fputs() – запись строки в файл. Аргументы: указатель файла и строка.
  • fwrite() – полный аналог функции fputs( ).
  • flock() – блокирует файл, т.е. не позволяет другим пользователям читать этот файл или писать в него, пока тот, кто наложил блокировку не закончит работу с данным файлом. Аргументы: указатель файла и номер режима блокировки.
    1 Можно читать, нельзя писать
    2 Нельзя ни читать, ни писать
    3 Снятие блокировки
  • Работа с каталогами

    В PHP есть несколько функций для работы с каталогами:

    • mkdir() – создание каталога. Аргументы: путевое имя каталога и режим доступа. Режим доступа – восьмеричное число из трех цифр с ведущим нулем. Первая цифра – право доступа для владельца, вторая – для группы, третья – для всех остальных. В системе Windows режим доступа игнорируется. В системе UNIX определены следующие права доступа:
      0 Нет доступа
      1 Доступ для запуска
      2 Доступ для записи
      3 Доступ для записи и запуска
      4 Доступ для чтения
      5 Доступ для чтения и запуска
      6 Доступ для чтения и записи
      7 Полный доступ

      Например, право полного доступа для владельца, чтения и запуска для группы и запуска для всех остальных:

      mkdir( "testdir", 0751 );
      
    • rmdir() – удаление каталога. Аргумент: путевое имя каталога. Удалить можно лишь пустой каталог при наличии права на это. При успешном выполнении функция возвращает true.
    • opendir() – открытие каталога. Аргумент: путевое имя каталога. В случае возникновения ошибки функция возвращает false. Ошибка при открытии может быть вызвана тем, что каталог не существует или программа не имеет права его читать.
    • readdir() – чтение каталога. Аргумент: путевое имя каталога. Возвращает строку, содержащую имя найденного файла или подкаталога. По достижении конца каталога функция возвращает false.

      Функции для работы с каталогами

        • chdir() – Сменить каталог
        • boolean chdir (string str)

      Изменяет текущий каталог PHP на указанный в качестве параметра str. Возвращает TRUE в случае успешного завершения, FALSE в случае возникновения ошибки

        • chroot() – Сменить корневой каталог
        • boolean chroot (string str)

      Изменяет корневой каталог текущего процесса на переданный в качестве параметра str. Возвращает TRUE в случае успешного завершения, FALSE в случае возникновения ошибки..

      Замечание: Для Windows-платформ эта функция не реализована.

        • closedir() – Освободить дескриптор каталога
        • void closedir (resourse catalog)

      Закрывает поток, связанный с каталогом и переданный в качестве параметра catalog. Перед использованием данной функции, поток должен быть открыт с помощью функции opendir().

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *