Доступ к файлам и папкам
Запись в файлы
Этот раздел описывает, как использовать PHP для записи содержимого в файлы в системах Windows.
PHP содержит функцию fwrite() для записи файлов. Эта функция определена ниже.
fwrite(указатель_файла,строка) – записывает содержимое строки в поток указанного файла. Если задан аргумент length (длина), запись будет остановлена после записи length байтов или достижения конца строки.
Следующий пример иллюстрирует, как записать все содержимое файла:
filewrite.php <?php $filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt"; $newfile = @fopen($filename, "w") or exit("Невозможно открыть файл"); $file_contents = "Добавьте эту строку в текстовый файл"; fwrite($newfile,$file_contents); fclose($newfile); ?>
Первый шаг состоит в создании переменной для хранения полного пути доступа к файлу, который будет открыт или создан:
$filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt";
Путь доступа к текстовому файлу myfile.txt хранится в переменной с именем filename. Затем создается указатель файла с именем $newfile и используется с функцией fopen() для открытия файла, указанного в предыдущем разделе. Указатель файла применяется для ссылки на только что открытый файл. Файл открывается в режиме записи:
$newfile = fopen($filename, "w");
Указатель файла является переменной PHP, содержащей ссылку на открытый файл. Он будет задействован позже для записи содержимого в открытый файл.
Затем создается переменная с именем $file_contents и ей присваивается строковое значение, которое будет записано в текстовый файл myfile.txt.
Наконец вызывается функция fwrite(). Первый параметр функции fwrite() указывает на имя файла, в который будет записываться содержимое. Второй параметр содержит текст, который будет записываться в открытый файл.
fwrite($newfile, $file_contents);
После завершения обработки файла используется функция fclose() для закрытия открытого файла.
В некоторых случаях может понадобиться записать содержимое существующего файла в новый файл. Этот процесс требует использования функций fopen(), fread() и fwrite(). Открывается первый файл, читается его содержимое и записывается в новый файл, который также был открыт. Следующий сценарий показывает реализацию такого процесса:
filecopy.php <?php $fileAname = "C:/MyFiles/PHP/file1.txt"; $fileBname = "C:/MyFiles/PHP/file.txt"; $currentfile = @fopen($fileAname,"r") or exit("Невозможно открыть файл"); $fileAcontents = fread($currentfile,filesize($fileAname)); $newfile = fopen($fileBname,"w"); fwrite($newfile, $fileAcontents); fclose($newfile); fclose($currentfile); echo "Содержимое файла file1.txt скопировано в файл file.txt"; ?>
Этот сценарий копирует содержимое "file1.txt" в новый файл "file.txt". Сначала объявляются две переменные $fileAname и $fileBname, которым присваиваются пути доступа к каталогам существующего и нового файла. Функция fopen() используется для открытия текущего файла для чтения его содержимого. Открытый файл присваивается указателю файла $currentfile. Содержимое открытого файла считывается с помощью функции fread() и присваивается переменной $fileAcontents. Затем функция fopen() применяется снова для открытия нового файла. Открытый файл присваивается указателю файла $newfile. Функция fwrite() используется для записи содержимого исходного файла в новый файл. Когда процесс копирования завершается, оба файла закрываются с помощью функции fclose().
Копирование файлов
Этот раздел описывает, как использовать PHP для копирования файлов в системах Windows.
PHP содержит функцию copy() для копирования файлов. Эта функция определяется ниже:
copy(исходный_файл, новый_файл) – копирует содержимое исходного файла, определенного первым параметром, в новый файл, определенный вторым параметром функции. Функция возвращает значение true или false.
Следующий пример показывает, как скопировать содержимое одного файла в другой файл:
filecopy.php <?php $orig_filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt"; $new_filename = "C:/Documents and Settings/Administrator/MyFiles/myNewfile.txt"; $status = @copy($orig_filename, $new_filename) or die("Невозможно скопировать файл"); echo "Содержимое файла успешно скопировано!"; ?>
Первый шаг состоит в создании переменной для хранения полного пути доступа к исходному файлу, содержимое которого будет скопировано:
$orig_filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt";
Затем создается вторая переменная для хранения полного пути доступа к новому файлу, который будет создан:
$new_filename = "C:/Documents and Settings/Administrators/MyFiles/myNewfile.txt";
Копирование выполняет функция copy(), принимая два параметра, путь доступа к исходному файлу — $orig_filename, и путь доступа к новому — $new_filename. Функция copy() возвращает значение true, если копирование завершается успешно; иначе возвращается значение false. Возвращаемое значение хранится в переменной $status.
$status = copy($orig_filename, $new_filename) or die("Невозможно скопировать файл");
Если функция copy() отказывает, выполняется функция die(), выводя сообщение об ошибке. Иначе с помощью функции echo выводится сообщение об успехе.
echo "Содержимое успешно скопировано";
В предыдущем разделе функция fwrite() используется вместе с функцией fread() для чтения содержимого одного файла и записи этого содержимого в новый файл. Если содержимое исходного файла не добавляется к существующему файлу, то функция copy() предоставляет более простой подход для копирования содержимого из существующего файла в новый файл.