Russian Qt Forum
Ноябрь 24, 2024, 16:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
метод копирования папки
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: метод копирования папки (Прочитано 15300 раз)
Rcus
Гость
Re: метод копирования папки
«
Ответ #15 :
Июнь 14, 2009, 22:39 »
Цитата: spectre71 от Июнь 14, 2009, 22:04
Не понимаю в чем проблема.
Ну, нет рекурсивного копирования директории, но есть возможность обхода начиная с заданного пути(даже без всяких встроенных итераторов), создания папок и копирования файлов. Проблема должна решиться написанием 20-50 сторчек кода.
Или я в чем-то не прав?
Это мягко говоря оптимистичный прогноз, во время копирования может произойти все что угодно, начиная от прав, заканчивая отсутствием inode'ов (да, именно поэтому у меня на EeePC не собрались kdelibs - не хватило 240к файлов). А ведь как обычно захочется асинхронности, отображения прогресса и прочего... Удачи уложиться в KLoC.
Записан
spectre71
Гость
Re: метод копирования папки
«
Ответ #16 :
Июнь 15, 2009, 06:42 »
Цитата: Rcus от Июнь 14, 2009, 22:39
Это мягко говоря оптимистичный прогноз, во время копирования может произойти все что угодно, начиная от прав, заканчивая отсутствием inode'ов (да, именно поэтому у меня на EeePC не собрались kdelibs - не хватило 240к файлов). А ведь как обычно захочется асинхронности, отображения прогресса и прочего... Удачи уложиться в KLoC.
Ты абсолютно прав. Но как говориться - не все сразу.
Основную обработку ошибок сделать не трудно, а все остальное либо делать позже, либо ждать от троллей.
Записан
ритт
Гость
Re: метод копирования папки
«
Ответ #17 :
Июнь 15, 2009, 07:52 »
воот, я про это же.
зы. у троллей при копировании папки об ошибках не уведомляется, вроде...
Записан
br3d
Гость
Re: метод копирования папки
«
Ответ #18 :
Июнь 16, 2009, 20:04 »
долго маялся, с QDirIterator ...
получилось как то так что он из всех вложенных подпапок копирует в одну целевую...,
Вообщем в результате, реализовал так:
QProcess prc;
QStringList pars;
pars<<"-r";
pars<< path;
pars<< path2;
prc.start("cp",pars);
prc.waitForFinished(); //от без этой функции, выполнение программы
//прерывалось до её завершения и копировалось не все(((
Записан
spectre71
Гость
Re: метод копирования папки
«
Ответ #19 :
Июнь 16, 2009, 21:25 »
Ну-Ну.
И как ты это будешь контролировать?
Например, если какой-то файл не сможет скопироваться по тем или иным причинам, как ты это отследишь?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: метод копирования папки
«
Ответ #20 :
Июнь 17, 2009, 06:19 »
Можно будет ловить код завершения процессса.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
spectre71
Гость
Re: метод копирования папки
«
Ответ #21 :
Июнь 17, 2009, 09:30 »
Цитата: panter_dsd от Июнь 17, 2009, 06:19
Можно будет ловить код завершения процессса.
Слишком мало информации.
Проще самому организовать рекурсивное копирование.
Кстати "cp" под виндой нет.
Записан
spirit
Гость
Re: метод копирования папки
«
Ответ #22 :
Июнь 17, 2009, 09:37 »
Цитата: spectre71 от Июнь 17, 2009, 09:30
Цитата: panter_dsd от Июнь 17, 2009, 06:19
Можно будет ловить код завершения процессса.
Слишком мало информации.
Проще самому организовать рекурсивное копирование.
полностью согласен, это и будет нормальным кросс-платформенным решением.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: метод копирования папки
«
Ответ #23 :
Июнь 17, 2009, 11:30 »
Цитата: spectre71 от Июнь 17, 2009, 09:30
Цитата: panter_dsd от Июнь 17, 2009, 06:19
Можно будет ловить код завершения процессса.
Слишком мало информации.
Проще самому организовать рекурсивное копирование.
Кстати "cp" под виндой нет.
Да ладно. А как же copy и xcopy?
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ритт
Гость
Re: метод копирования папки
«
Ответ #24 :
Июнь 17, 2009, 11:43 »
ха. а отписаться забыл
если коротко, то все об этом знают, помарочка-напоминалочка в коде стОит, но никому пока дела до данной задачи нет (кстати, такой таски в паблике трекера тоже нет - можно смело рапортовать).
судя по манпагам, подобного функционала в апи никсов также нет - единственная альтернатива - рекурсивный QDirIterator + код QFile::copy.
и даже больше - если, не дай божа, вы написали свою реализацию файлэнджины для не-локальных накопителей (попросту говоря, вфс), текущая реализация не позволит скопировать папку с физической фс на виртуальную (и наоборот) - и всё-равно придётся грызть QDirIterator + код QFile::copy.
если кому интересно, я намерен к 4.6 данное безобразие искоренить (если меня в конце-концов не забанят на гиториусе
)
Записан
spirit
Гость
Re: метод копирования папки
«
Ответ #25 :
Июнь 17, 2009, 11:44 »
Цитата: Константин от Июнь 17, 2009, 11:43
если кому интересно, я намерен к 4.6 данное безобразие искоренить (если меня в конце-концов не забанят на гиториусе
)
ага, было бы очень неплохо.
Записан
spectre71
Гость
Re: метод копирования папки
«
Ответ #26 :
Июнь 17, 2009, 11:47 »
Цитата: panter_dsd от Июнь 17, 2009, 11:30
Да ладно. А как же copy и xcopy?
1) платформозависимо
2) надо отключать всякие подтверждения ...
3) Опять же обработка ошибок, проще сделать самому рекурсивное копиривание и добавлять различные обработки
ошибок, откаты итд, по мере развития кода и необходимости. Простой вариант можно написать и отладить за пару часов.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: метод копирования папки
«
Ответ #27 :
Июнь 17, 2009, 11:50 »
spectre71: я не говорил что этот вариант лучше. Просто если есть трудности самонаписания рекурсивного копирования, а сроки поджимают, можно использовать данный вариант, который потом можно будет заменить на верный.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
spectre71
Гость
Re: метод копирования папки
«
Ответ #28 :
Июнь 17, 2009, 11:50 »
Цитата: Константин от Июнь 17, 2009, 11:43
если кому интересно, я намерен к 4.6 данное безобразие искоренить (если меня в конце-концов не забанят на гиториусе
)
Это очень многим надо, в смысле искоренить безобразие
Записан
mugabe
Гость
Re: метод копирования папки
«
Ответ #29 :
Июнь 17, 2009, 12:50 »
Цитата: panter_dsd от Июнь 17, 2009, 11:50
...который потом можно будет заменить на верный.
в таких ситуациях обычно "потом" наступает только когда приходит другой разработчик и о***вает от увиденного
)
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...