| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > Копирование файлов на VB.NET |
| Автор: bankuss 14.5.2004, 09:36 |
| Вобщем делаю прогу которая автоматом переносит файлы с сетевого диска на хард. На сетевом диске есть директория с файлами, а также в этой директории есть поддиректории (тоже с файлами) ну типа K:\файлы и K:\SYS\файлы итд Если делать просто DIR() то я получаю только файлы на K:\ А если сделать DIR с атрибутом directory я получаю имя поддиректории SYS. Теперь чтоб получить имя файла в SYS вызываю DIR с путем SYS и все ок, имена файлов из поддиректории SYS считываются. Но как получить имя следующей поддиректории, ведь DIR уже считал имя файла, то есть, при вызове DIR с атрибутом directory я снова получаю SYS а мне нужен следующий подкаталог! Если сразу вызвать DIR с атриб. directory то он считывает все подряд: и файлы и поддиректории, но поддиректории он считывает не так, как мне нужно т.е. возвращяет просто имя SYS без слэша и именен файлов... Может кто разбирался с этими функциями? Как лучше сделать код? |
| Автор: Akina 14.5.2004, 09:51 |
| Делаем подпрограмму (или функцию), которая принимает путь. Сперва она делает CHDIR по указаннному пути, потом DIR для получения списка файлов, затем DIR для получения списка подкаталогов, и наконец для каждого из полученных подкаталогов вызвать себя же, передав в качестве параметра подкаталог. Обычная рекурсия, короче... |
| Автор: bankuss 14.5.2004, 11:05 |
| Маловероятно что это будет работать.... так как DIR вначале должен вызываться с параметром пути, а затем, чтоб получить следующее имя - без параметров, а если его постоянно вызывать с параметром пути то и имя файла всегда будет одно и то же (первое), а без параметра пути первый раз DIR вызывать нельзя.... я уже пробовал подобным образом все это в цикле сделать, но как написал выше, ничего невышло... |
| Автор: Akina 14.5.2004, 11:12 |
| bankuss Здравствуй, милая моя! я тебе что, свою функцию DIR вместо системной предлагаю писАть? Сперва ты из текущего каталога выгребаешь по одному все файлы и все подкаталоги и только после этого начинаешь рекурсивный обход подкаталогов - которые ты нагреб в локальный массив. |
| Автор: bankuss 14.5.2004, 11:15 |
| ты имеешь ввиду имена поддиректорий складывать в строковый массив, а потом их "приклеивать" к пути и цеплять оттуда файлы? |
| Автор: Akina 14.5.2004, 11:51 | ||
| bankuss Угусеньки. Типа так:
|
| Автор: bankuss 14.5.2004, 11:59 |
| а уже так думал сделать |
| Автор: Akina 14.5.2004, 12:14 | ||
| Тьфу, блин, совсем ты меня запутал... и я тоже. Короче так: код выше похерить, идею оставить. Сканирование делаем не 2 раза, а один, с атрибутом vbDirectory, и сразу сортируем на файлы и подкаталоги. Файлы выводим, подкаталоги суем в массив. Закончив обработку каталога, начинаем рекурсивный вызов для каждого подкаталога. Остальное верно...
|
| Автор: bankuss 14.5.2004, 12:18 |
| я тоже к этому пришел Но тогда как отличить - каталог это или файл? |
| Автор: Akina 14.5.2004, 12:20 | ||
|
| Автор: bankuss 14.5.2004, 13:06 |
| с небольшими модернизациями и доработками все заработало... Добавлено @ 13:09 и еще а можно ли сделать, чтоб копируемые файлы сжимались в zip? Я где то читал что есть dll зиповая, которую можно юзать в своих прогах |
| Автор: cardinal 14.5.2004, 14:08 |
| bankuss, еще тут можешь почитать по поводу первого вопроса: http://forum.vingrad.ru/index.php?showtopic=9458 А по поводу второго задай вопрос отдельно- таковы правила. Ты их читал? |