Назад | Начало урока | Вперед
Содержание

Глава 1 (продолжение 1)

Обработка нескольких каталогов
Эта программа вытаскивает из 16-ти каталогов по одному файлу, каждый файл
переименовывает и помещает все вытащенные файлы в новый каталог - каждый файл
с новым именем.

Программа в цикле нашла все 16 файлов из 16 каталогов, каждый файл вытащила
и переписала их при помощи функции copy() в новые файлы. В формировании имен
новых файлов используется индекс массива (числа от 0 до 16). Отлично!

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


<?php

$masName1 = array();

//-----------------------------
// откроем файл для вывода ошибок
$filename = "error.txt";
if(!($errorFile = fopen($filename, "w"))) {

print("Error: ");
print("'$filename' could not be created\n");
exit;
}
//-----------------------------

$Str1 = "ПЕРВЫЕ ШАГИ";
$Str2 = ".files/r.htm";

$index = 0;
for($counter=370;$counter<387;$counter++) {

//сохраним в массиве имена файлов для считывания
$StrTemp = "$Str1$counter$Str2";
$masName1[$index] = $StrTemp;
$index++;
}

// сосчитаем количество элементов в массиве
$indexLimit = count($masName1);

//в цикле откроем каждый файл, прочитаем и скопируем в новый файл
for($i=0;$i<$indexLimit;$i++) {

// откроем файл для чтения
$filenameFrom = "$masName1[$i]";

if(!($myFileFrom = fopen($filenameFrom, "r"))) {

fputs($errorFile, "file '$filenameFrom' could not be opened");
exit;
}

// откроем файл для вывода результата
$filenameTo = "new$i.htm";
if(!($myFileOut = fopen($filenameTo, "w"))) {

fputs($errorFile, "file '$filename' could not be opened");
exit;
}

if(copy($filenameFrom, $filenameTo)) {

fputs($errorFile, " '$filenameFrom' copied to '$filenameTo' \n");
}
else {
fputs($errorFile, "'$filenameFrom' could not copied to '$filenameTo'\n");
}

fclose($myFileOut);
fclose($myFileFrom);

}

// закроем файлы
fclose($errorFile);

?>


Анализ:

Здесь для копирования файлов применена функция copy(). Обратите внимание, что этой функции передаются имена файлов, а не их дескрипторы. В имя может входить и путь.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz