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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Копирование директории с вложенными файлами и папками  (Прочитано 3992 раз)
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« : Январь 10, 2014, 21:16 »

Обе функции делают одно и тоже, только вторая дополнена выводом ошибки и возможности прервать выполнение копирования при первой ошибке Улыбающийся

Код
C++ (Qt)
static void copyPath( const QString & oldPath, const QString & newPath )
{
   if ( QFileInfo( oldPath ).isDir() )
   {
       QDir().mkdir( newPath );
       foreach ( const QString & entry, QDir( oldPath ).entryList( QDir::AllDirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot ) )
           copyPath( oldPath + QDir::separator() + entry, newPath + QDir::separator() + entry );
   } else
       QFile::copy( oldPath, newPath );
}
 

Код
C++ (Qt)
static bool copyPathE( const QString & oldPath, const QString & newPath, bool interruptCopyingWhenError = false, bool logError = true )
{
   bool result = true;
 
   if ( QFileInfo( oldPath ).isDir() )
   {
       QDir().mkdir( newPath );
       foreach ( const QString & entry, QDir( oldPath ).entryList( QDir::AllDirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot ) )
       {
           const QString & entryOldPath = oldPath + QDir::separator() + entry;
           const QString & entryNewPath = newPath + QDir::separator() + entry;
           result = copyPathE( entryOldPath, entryNewPath );
 
           if ( !result && interruptCopyingWhenError )
           {
               if ( logError )
                   qDebug() << "Error copying: " << entryOldPath << " -> " << entryNewPath;
               break;
           }
       }
 
   } else
   {
       result = QFile::copy( oldPath, newPath );
 
       if ( !result && interruptCopyingWhenError && logError )
           qDebug() << "Error copying: " << oldPath << " -> " << newPath;
   }
 
   return result;
}
 

PS. копировать можно и просто одинокие файлы Подмигивающий
« Последнее редактирование: Январь 10, 2014, 21:21 от gil9red » Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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