Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

26.2. Копирование файлов в PHP

Ни одна операционная система не обходится без таких элементарных функций, как копирование и переименование файлов. Только представьте на минуту, что вам предлагают установить сверхбыструю операционную систему, но с одним условием, что там будут отсутствовать функции копирования или переименования файлов. Уверены, что бы ни предлагали вам, ВЫ не согласитесь установить такую операционную систему на свой компьютер, и все дело в каких-то, на первый взгляд совсем незаметных, функциях. Собственно говоря, так и любой язык программирования проиграет в популярности в случае отсутствия этих фикции. С течением времени эти функции станут незаменимыми помощниками вам при работе в РНР. Рассмотрим две функции:

• сору(),

• rename().

Функция сору() копирует файл из одного места в другое, предварительно указанное при помощи вносимых параметров этой функции. Функция сору() подчинена следующему синтаксису.

int сору (string source, string dest)

В данной функции вместо параметра source указывается строка пути файла с нем копируемого файла, также можно использовать переменные. Если указывается просто имя файла без дополнений (каталога, диска и т. д.), то интерпретатор подразумевает, что копируемый файл находится в том же месте, где и сам исполняемый файл, т. е. файл, в котором содержится скрипт. Параметр dest указывает на путь, куда будет копироваться файл. Сама функция возвращает значение true в результате успешного копирования (если не возникнет никаких ошибок), в противном случае — false. Например:

<?php

$path = "Z:/home/localhost/www/1.txt";

$file = basename($path);

if (copy($file, "Z:/home/localhost/1.txt")) {

    if (copy ($file, "Z:/home/localhost/2.txt") )

        echo "Копирование файла $file произведено удачно!";

    }

    else {

        echo "Копирование файла $file не выполнено! <br>";

    }

    echo "Исправьте ошибки и проделайте операцию копирования заново";

}

?>

Опишем работу приведенного примера. Сначала задается путь к файлу 1.txt После этого используется функция basename(), чтобы получить само имя этого файла. Имя файла передается в переменную $file. Именно с этим именем будут производиться манипуляции, т. е. именно этот файл будет копироваться. Если произойдет успешное копирование файла 1.txt в указанном направлении: Z:/home/ localhost/1. txt, то указатель выполнения скрипта перейдет в следующий блок, т. е. опять будет выполняться проверка условия. Мы воспользовались этой операцией, чтобы заострить ваше внимание на том, что функция сору() помимо копирования файлов может также производить копирование файла с изменением его имени. При выполнении программы файл 1.txt будет скопирован два раза. Первый раз — Z: /home/localhost/1.txt, второй — Z: /home/localhost/2.txt). В директории localhost появится два идентичных файла, только с разными именами. Один будет иметь имя 1.txt, второй 2.txt.


ВНИМАНИЕ

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


В результате выполнения программы на экран будет выведено:

Копирование файла 1.txt произведено удачно!

При указании каких-либо неверных параметров программа вернет следующие строки:

Копирование файла 1.txt не выполнено!

Исправьте ошибки и проделайте операцию копирования заново

Если нужно переименовать файл, используют функцию rename(). Она перемещает файл из одного места и записывает в другое, при этом изменяя его имя. Функция rename() имеет следующий синтаксис:

int rename (string oldname, string newname)

Параметр oldname указывает имя файла, который мы собираемся переименовать. Следующий за ним параметр указывает новое имя файла — newname. Функция rename() в случае положительного исхода возвращает значение true, в случае отрицательного — false. Например:

<?php

$path = "Z:/home/localhost/www/1.txt";

$file = basename ($path) ;

if (rename($file, "Z:/home/localhost/newname.txt") )

{

    есho "Изменение имени файла $file произведено удачно!";

}

else {

    echo "Изменение имени файла $file не выполнено!<br>";

    echo "Исправьте ошибки и проделайте операцию копирования заново" ;

}

?>

В результате выполнения этого скрипта произойдет удаление файла 1.txt по пути Z: /home/localhost/www/1.txt, перемещение его по пути Z : /home/localhost/' с новым именем newname.txt, хотя все параметры данного файла будут полностью соответствовать файлу 1.txt, т. е. произойдет просто переименование файла и перемещение его в другой каталог. Результатом работы данного скрипта будет следующая строка:

Изменение имени файла 1.txt произведено удачно!

Описанные функции используются в РНР 3 и РНР 4.

<< Предыдущий параграф Следующий параграф >>
Оглавление