П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3525 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6122 раз(а).

Учебник HTML.
Просмотров 3276 раз(а).

Руководство по PHP5.
Просмотров 5499 раз(а).

Хостинг через призму DNS.
Просмотров 4150 раз(а).

Подборка текстов стандартных документов.
Просмотров 55773 раз(а).

Учебник PHP - Самоучитель
Просмотров 3093 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 5761 раз(а).

Внешние атаки...
Просмотров 3843 раз(а).

Учебник PHP.
Просмотров 2826 раз(а).

SSI в примерах.
Просмотров 37463 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Работа с файлами

Работа с каталогами



Для установки текущего каталога применяется функция chdir:

  int chdir ( string directory)

Работать с этой функцией можно следующим образом:

  • chdir("/tmp/data"); // переход по абсолютному пути
  • chdir("./js"); // переход в подкаталог текущего каталога
  • chdir(".."); // переход в родительский каталог
  • chdir("~/data"); // переходим в /home/пользователь/data (для Unix)

Чтобы узнать текущий каталог можно воспользоваться функцией getcwd:

  string getcwd ( string path)

Для того чтобы открыть каталог используется функция opendir, открывающая каталог, заданный параметром path:

  int opendir ( string path)

После того, как каталог открыт, прочитать его можно функцией readdir:

  string readdir ( int dir)

Эта функция возвращает имена элементов, содержащихся в каталоге. Кроме файлов и папок в каталогах находятся также элементы "." и "..". Первый элемент указывает на текущий каталог, а второй - на родительский. Текущий каталог, кстати, можно открыть, указав его имя как ".":

   $dir = opendir (".");

После того, как работа с каталогом закончена, его нужно закрыть. Закрытие каталога выполняется при помощи функции closedir:

  void closedir ($dir)

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

<?
  $dir = opendir (".");
  echo "Files:\n";
  while ($file = readdir ($dir)) 
  {
    echo "$file<br>";
  }
  closedir ($dir);
?>

Заметим, что эта функция возвращает также "." и "..". Если этого делать не нужно, то исключить эти значения можно следующим образом:

<?
  $dir = opendir (".");
  while ( $file = readdir ($dir))
  {
    if (( $file != ".") && ($file != ".."))
    {
      echo "$file<br>";
    }
  }
  closedir ($dir);
?>

В качестве примера на рассмотренные функции, давайте создадим скрипт, удаляющий все файлы из каталога c:/temp, к которым не было доступа в течение суток. Функция удаления файлов в этом случае вызывается рекурсивно.

<?
  function delTemporaryFiles ($directory)
  {
  $dir = opendir ($directory);
  while (( $file = readdir ($dir)))
  {
    if( is_file ($directory."/".$file))
    {
      $acc_time = fileatime ($directory."/".$file);
      $time =  time();
      if (($time - $acc_time) > 24*60*60)
      {
        if (  unlink ($directory."/".$file))
        {
          echo ("Файлы успешно удалены");
        }
      }
    }
    else if ( is_dir ($directory."/".$file) && ($file != ".") && ($file != ".."))
    {
      delTemporaryFiles ($directory."/".$file);
    }
  }
  closedir ($dir);
  }
  delTemporaryFiles ("c:/temp");
?>

Создание каталогов производится с помощью функции mkdir:

  bool mkdir ( string dirname, int mode)

Эта функция создает каталог с именем dirname и правами доступа mode. В случае неудачи возвращает false. Права доступа задаются только для каталогов UNIX, поскольку в Windows этот аргумент игнорируется. Ниже приведен пример создания каталога test в директории c:/temp.

<?
  $flag = mkdir ("c:/temp/test", 0700);
  if($flag)
  {
    echo("Каталог успешно создан");
  }
  else
  {
    echo("Ошибка создания каталога");
  }
?>

Удалить каталог можно с помощью функции rmdir:

  bool rmdir ( string dirname)

Теперь удалим только что созданный каталог /test:

<?
  $flag = rmdir ("c:/temp/test");
  if($flag)
  {
    echo("Каталог успешно удален");
  }
  else
  {
    echo("Ошибка удаления каталога");
  }
?>

Функция rmdir удаляет только пустые каталоги. Для того чтобы удалять непустые каталоги, давайте напишем функцию и удалим каталог c:/temp со всеми вложенными папками и файлами:

<?
  function full_del_dir ($directory)
  {
  $dir = opendir($directory);
  while(($file = readdir($dir)))
  {
    if ( is_file ($directory."/".$file))
    {
      unlink ($directory."/".$file);
    }
    else if ( is_dir ($directory."/".$file) &&
             ($file != ".") && ($file != ".."))
    {
      full_del_dir ($directory."/".$file);  
    }
  }
  closedir ($dir);
  rmdir ($directory);
  echo("Каталог успешно удален");
  }
  full_del_dir ("c:/temp")
?>

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

Назад | Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru