Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 13.02.2011
Сообщений: 105
1

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

04.05.2011, 12:49. Показов 1203. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такая структура папок и файлов
папка 1(1.txt, 2.txt, 3.txt,папка 2(папка 3(4.txt),папка 4(5.txt, 6.txt))
Такой код:
Код
<?php
$default_dir = "C://папка 1";
function traverse_dir($dir) {
    echo "Обход каталога $dir....<br>";
    chdir($dir);
    if(!($dp = opendir($dir))) die("Невозможно открыть каталог $dir.");  
    while($file = readdir($dp)) {
        if(is_dir($file)) {
            if($file != '.' && $file != '..') {
                echo "/$file<br>";
                traverse_dir("$dir/$file");
                chdir($dir);
            }
        }
        if (is_file($file))
        echo "$file<BR>";
    }
    closedir($dp);
}
traverse_dir($default_dir);
?>
Код выводит на экран все файлы и папки указанного каталога
Работает так:
Заходит в папка 1, потом выводит 1.txt, 2.txt, 3.txt и папка 2
Потом заходит в папка 2, выводит папка 3, заходит в папка 3, выводит 4.txt
Дальше код выходит из цикла, дескриптор был 3, стал 2 и код переходит на строку
Код
                traverse_dir("$dir/$file");
                chdir($dir);
Почему код перебрасывается на строку chdir($dir), после выхода из цикла ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2011, 12:49
Ответы с готовыми решениями:

Работа с файлами , хотелось бы с windows system файлами
всем привет, нужна интересная идея по программированию, работа с файлами , хотелось бы с windows...

Работа с файлами(Запись,чтение,работа с данными)
Здравствуйте, никак не могу осилить файлы... Для начала вот само задание: В справочной автовокзала...

Лабораторная работа №5. Работа с файлами и алгоритмы сортировки
1. Написать функцию Load для считывания из текстового файла (например, Workers.txt) информации о...

Работа с файлами, чтение/работа со строкой
Доброго времени суток. Начал работать с C++ Builder 6. Есть текстовый файл .txt с различными...

5
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
04.05.2011, 13:13 2
сделай так, chdir тут ни к чему:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$default_dir = "C://папка 1";
function traverse_dir($dir) {
    echo "Обход каталога $dir....<br>";
    if(!($dp = opendir($dir))) die("Невозможно открыть каталог $dir.");  
    while(false !==($file = readdir($dp))) {
        if(is_dir($file)) {
            if($file != '.' && $file != '..') {
                echo "/$file<br>";
                traverse_dir("$dir/$file");
            }
        }
        if (is_file($file))
        echo "$file<BR>";
    }
    closedir($dp);
}
traverse_dir($default_dir);
?>
0
1 / 1 / 1
Регистрация: 13.02.2011
Сообщений: 105
04.05.2011, 13:17  [ТС] 3
сделай так, chdir тут ни к чему:
Я спросил не как мне сделать, а почему так происходит, вы вообще тестировали свой код, он можно сказать вообще не работает, просто выводит
Обход каталога C://папка 1...., а должен это:
Обход каталога C://папка 1....
1.txt
2.txt
3.txt
/папка 2
Обход каталога C://папка 1/папка 2....
/папка 3
Обход каталога C://папка 1/папка 2/папка 3....
4.txt
/папка 4
Обход каталога C://папка 1/папка 2/папка 4....
5.txt
6.txt
Но вопрос даже не в этом
0
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
04.05.2011, 13:57 4
вот рабочий код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
function traverse_dir($dir) {
    echo "Обход каталога $dir....<br>";
    if(!($dp = dir($dir))) die("Невозможно открыть каталог $dir.");  
    while(false !== ($file = $dp->read())) 
    {
        if (($file == '.') || ($file == '..')) {continue;}
    
    if (is_dir("{$dir}/{$file}"))
    {
        echo "/{$file}";
        traverse_dir("{$dir}/{$file}");
    } else 
    {
        echo "{$file}";
    }
    }
    closedir($dp);
}
$default_dir = 'папка 1';
traverse_dir($default_dir);
?>
0
1 / 1 / 1
Регистрация: 13.02.2011
Сообщений: 105
04.05.2011, 14:33  [ТС] 5
Но, все равно, мне интересно почему в моем случае происходит так, как я описал выше
0
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
04.05.2011, 14:41 6
видимо когда он заходит в папку 3, обрабатывает все файлы которые там есть, потом цикл обрывается и по рекурсии функция возвращает значение дескриптора...
1
04.05.2011, 14:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2011, 14:41
Помогаю со студенческими работами здесь

Работа с файлами
Напишите программу, которая сортирует натуральные числа, записанные в файле , по возрастанию...

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

Работа с файлами
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt;//использую для функции getch-не дает...

работа с файлами
Пожалуйста помогите исправить программу. Необходимо написать программу которая бы создавала файл с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru