Russian Qt Forum
Сентябрь 22, 2024, 13:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: метод копирования папки  (Прочитано 15137 раз)
Rcus
Гость
« Ответ #15 : Июнь 14, 2009, 22:39 »

Не понимаю в чем проблема.
Ну, нет рекурсивного копирования директории, но есть возможность обхода начиная с заданного пути(даже без всяких встроенных итераторов), создания папок и копирования файлов. Проблема должна решиться написанием 20-50 сторчек кода.

Или я в чем-то не прав?

Это мягко говоря оптимистичный прогноз, во время копирования может произойти все что угодно, начиная от прав, заканчивая отсутствием inode'ов (да, именно поэтому у меня на EeePC не собрались kdelibs - не хватило 240к файлов). А ведь как обычно захочется асинхронности, отображения прогресса и прочего... Удачи уложиться в KLoC.
Записан
spectre71
Гость
« Ответ #16 : Июнь 15, 2009, 06:42 »

Это мягко говоря оптимистичный прогноз, во время копирования может произойти все что угодно, начиная от прав, заканчивая отсутствием inode'ов (да, именно поэтому у меня на EeePC не собрались kdelibs - не хватило 240к файлов). А ведь как обычно захочется асинхронности, отображения прогресса и прочего... Удачи уложиться в KLoC.
Ты абсолютно прав. Но как говориться - не все сразу.
Основную обработку ошибок сделать не трудно, а все остальное либо делать позже, либо ждать от троллей.
Записан
ритт
Гость
« Ответ #17 : Июнь 15, 2009, 07:52 »

воот, я про это же.

зы. у троллей при копировании папки об ошибках не уведомляется, вроде...
Записан
br3d
Гость
« Ответ #18 : Июнь 16, 2009, 20:04 »

долго маялся, с  QDirIterator ...
   получилось как то так что он из всех вложенных подпапок копирует в одну целевую...,

Вообщем в результате, реализовал так:

        QProcess prc;
        QStringList pars;
        pars<<"-r";
        pars<< path;
        pars<< path2;
        prc.start("cp",pars);
        prc.waitForFinished(); //от без этой функции, выполнение программы
                                       //прерывалось до её завершения и копировалось не все(((
Записан
spectre71
Гость
« Ответ #19 : Июнь 16, 2009, 21:25 »

Ну-Ну.
И как ты это будешь контролировать?
Например, если какой-то файл не сможет скопироваться по тем или иным причинам, как ты это отследишь?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #20 : Июнь 17, 2009, 06:19 »

Можно будет ловить код завершения процессса.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
spectre71
Гость
« Ответ #21 : Июнь 17, 2009, 09:30 »

Можно будет ловить код завершения процессса.

Слишком мало информации.
Проще самому организовать рекурсивное копирование.

Кстати "cp" под виндой нет.
Записан
spirit
Гость
« Ответ #22 : Июнь 17, 2009, 09:37 »

Можно будет ловить код завершения процессса.

Слишком мало информации.
Проще самому организовать рекурсивное копирование.
полностью согласен, это и будет нормальным кросс-платформенным решением.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #23 : Июнь 17, 2009, 11:30 »

Можно будет ловить код завершения процессса.

Слишком мало информации.
Проще самому организовать рекурсивное копирование.

Кстати "cp" под виндой нет.

Да ладно. А как же copy и xcopy?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ритт
Гость
« Ответ #24 : Июнь 17, 2009, 11:43 »

ха. а отписаться забыл Улыбающийся
если коротко, то все об этом знают, помарочка-напоминалочка в коде стОит, но никому пока дела до данной задачи нет (кстати, такой таски в паблике трекера тоже нет - можно смело рапортовать).
судя по манпагам, подобного функционала в апи никсов также нет - единственная альтернатива - рекурсивный QDirIterator + код QFile::copy.
и даже больше - если, не дай божа, вы написали свою реализацию файлэнджины для не-локальных накопителей (попросту говоря, вфс), текущая реализация не позволит скопировать папку с физической фс на виртуальную (и наоборот) - и всё-равно придётся грызть QDirIterator + код QFile::copy.

если кому интересно, я намерен к 4.6 данное безобразие искоренить (если меня в конце-концов не забанят на гиториусе Улыбающийся )
Записан
spirit
Гость
« Ответ #25 : Июнь 17, 2009, 11:44 »

если кому интересно, я намерен к 4.6 данное безобразие искоренить (если меня в конце-концов не забанят на гиториусе Улыбающийся )
ага, было бы очень неплохо.
Записан
spectre71
Гость
« Ответ #26 : Июнь 17, 2009, 11:47 »

Да ладно. А как же copy и xcopy?
1) платформозависимо
2) надо отключать всякие подтверждения ...
3) Опять же обработка ошибок, проще сделать самому рекурсивное копиривание и добавлять различные обработки
ошибок, откаты итд, по мере развития кода и необходимости. Простой вариант можно написать и отладить за пару часов.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #27 : Июнь 17, 2009, 11:50 »

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

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
spectre71
Гость
« Ответ #28 : Июнь 17, 2009, 11:50 »

если кому интересно, я намерен к 4.6 данное безобразие искоренить (если меня в конце-концов не забанят на гиториусе Улыбающийся )

Это очень многим надо, в смысле искоренить безобразие Улыбающийся
Записан
mugabe
Гость
« Ответ #29 : Июнь 17, 2009, 12:50 »

...который потом можно будет заменить на верный.
в таких ситуациях обычно "потом" наступает только когда приходит другой разработчик и о***вает от увиденного Улыбающийся)
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.129 секунд. Запросов: 23.