Автор Тема: Рекурсивное чтение дерикторий.  (Прочитано 7559 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн rush[666]

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://sttec.yar.ru/~rush/
Рекурсивное чтение дерикторий.
« : 26 Января 2005, 12:37:19 »
Хай, олл!
Не могли бы дать совет по сабжу?

Т.е. как находить вложеные дериктории?

Заранее спасибо!

Оффлайн 4m@t!c

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Рекурсивное чтение дерикторий.
« Ответ #1 : 26 Января 2005, 12:57:09 »
В ноутах по этой линке посмотри - там есть пример.. Где-то 5-й ноут смотри.
Функции по работе с файловой системой
Артисты не приехали - приехали цыгане

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Рекурсивное чтение дерикторий.
« Ответ #2 : 26 Января 2005, 13:11:49 »
rush[666]
Могу предложить алгоритм следующего рода:
1. Считываем внутрь директории.
2. Проверяем на наличие дирикторий, тоесть ищем строки без расширений.
3. Запихиваем их в массив.
4. Выбираем из массива и добавляем к начальному пути и по новой пока их неостнится.
[off]Безработный[/off]

Оффлайн 4m@t!c

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Рекурсивное чтение дерикторий.
« Ответ #3 : 26 Января 2005, 13:21:35 »
Цитировать
for_i_0:
 Проверяем на наличие дирикторий, тоесть ищем строки без расширений.

Для проверки является ли объект файлом или директорией - есть конкретная функция is_file() и is_dir() соотвественно, а не проверка имени объекта по маске.
З.Ы. То, что ты описал - это "неправильная" рекусрия... Массив нужно использовать, не для
Цитировать
for_i_0:
4. Выбираем из массива и добавляем к начальному пути и по новой пока их неостнится.

а для того, что бы организовать дерево.
Артисты не приехали - приехали цыгане

Оффлайн rush[666]

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://sttec.yar.ru/~rush/
Рекурсивное чтение дерикторий.
« Ответ #4 : 26 Января 2005, 13:22:19 »
2for_i_0
Буду очень признателен. Как можно получить?
Тут же вопрос. Ты выявляешь директорию по строке без расширений? А если существует файл без оннго, что будет?

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Рекурсивное чтение дерикторий.
« Ответ #5 : 26 Января 2005, 13:42:09 »
rush[666]
1. меня уже поправили.
2. Читаем предыдущий пост 4m@t!c
3. Насколько я знаю файлы без раширения не бывают.
4. опечатка "строка" - на самом деле имелось ввиду имена файлов. Как бы там не было, алгоритм предложенный мною пример неправилной рекурсии. И я это признаю.

4m@t!c
[OFF]Спасибо за правку. Будем учится на своих ошибках.[/OFF]
[off]Безработный[/off]

Оффлайн 4m@t!c

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Рекурсивное чтение дерикторий.
« Ответ #6 : 26 Января 2005, 13:49:38 »
[OFF]
for_i_0, пожалуйста.
Цитировать
for_i_0:
3. Насколько я знаю файлы без раширения не бывают.

еще как бывают. Есть понятие имя файла, которое условно, (Подчеркиваю) условно делится на название файла (то, что до точки) и на расширение файла(то, что после точки). Файл можно создать без расширения и без названия. т.е. есть ФАЙЛ host, а есть ФАЙЛ .htaccess
[/OFF]
Артисты не приехали - приехали цыгане

Оффлайн rush[666]

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://sttec.yar.ru/~rush/
Рекурсивное чтение дерикторий.
« Ответ #7 : 26 Января 2005, 13:56:52 »
ну Бог с ними с файлами то =)
Не могу понять как действует функция is_dir.
Пример можно?

Оффлайн 4m@t!c

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Рекурсивное чтение дерикторий.
« Ответ #8 : 26 Января 2005, 14:11:10 »
rush[666], КАК она действует можно только догадываться, либо почитать в сырцах. А если тебе интересно, ЧТО она делает, то глянь is_dir() в мане.
Артисты не приехали - приехали цыгане

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Рекурсивное чтение дерикторий.
« Ответ #9 : 26 Января 2005, 15:15:11 »
for_i_0
с точки чрения файловой системы различия между файлом и каталогом - нет.
просто каталог - это такой особенный файл, который содержит ссылки на другие файлы.
и уж тем более, никакого различия по именам нет и быть не может.

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Рекурсивное чтение дерикторий.
« Ответ #10 : 26 Января 2005, 16:54:01 »
[off]Господа, ну хоть кто-нибудь удосужится ман прочитать? Там по одной из функций приведен работающий пример именно такой рекурсии. Специально ссылку не дам.[/off]
LJ: Backslashed life (rss)

Оффлайн 4m@t!c

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Рекурсивное чтение дерикторий.
« Ответ #11 : 26 Января 2005, 17:37:46 »
[OFF]
CGVictor, если внимательно прочесть тред, то можно увидеть, что я привел ссылку на ман и сказал, что там есть пример.
[/OFF]
Артисты не приехали - приехали цыгане

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Рекурсивное чтение дерикторий.
« Ответ #12 : 26 Января 2005, 18:33:24 »
4m@t!c
[off]Десяток сообщений о том, что есть в мане. Неплохо.[/off]
LJ: Backslashed life (rss)

Оффлайн kuskin

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.allware.info/
Рекурсивное чтение дерикторий.
« Ответ #13 : 23 Февраля 2005, 05:17:41 »
Цитировать
rush[666]:
Т.е. как находить вложеные дериктории?


пример из книги:

// Функция распечатывает имена всех подкаталогов в текущем каталоге,
// выполняя рекурсивный обход. Параметр $level задает текущую
// глубину рекурсии.
function PrintTree($level=1)
{
// Открываем каталог и выходим в случае ошибки
$d=@opendir(".");
if(!$d) return;
while(($e=readdir($d))!==false) {
// Игнорируем элементы .. и .
if($e==\'.\'||$e==\'..\') continue;
// Нам нужны только подкаталоги
if(!@is_dir($e)) continue;
// Печатаем пробелы, чтобы сместить вывод
for($i=0; $i<$level; $i++) echo " ";
// Выводим текущий элемент
echo "$e\\n";
// Входим в текущий подкаталог и печатаем его
if(!chdir($e)) continue;
PrintTree($level+1);
// Возвращаемся назад
chdir("..");
// Отправляем данные в браузер, чтобы избежать видимости зависания
// для больших распечаток
flush();
}
closedir($d);
}
// Выводим остальной текст фиксированным шрифтом
echo "
";
echo "/\\n";
// Входим в корневой каталог и печатаем его
chdir("/");
PrintTree();
echo "
";
?>
kaw

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28