bool?copyRecursively(const?QString?&srcFilePath,?const?QString?&tgtFilePath) { QFileInfo?srcFileInfo(srcFilePath); if?(srcFileInfo.isDir())?{ QDir?targetDir(tgtFilePath); targetDir.cdUp(); if?(!targetDir.mkdir(QFileInfo(tgtFilePath).fileName())) return?false; QDir?sourceDir(srcFilePath); QStringList?fileNames?=?sourceDir.entryList(QDir::Files?|?QDir::Dirs?|?QDir::NoDotAndDotDot?|?QDir::Hidden?|?QDir::System); foreach(const?QString?&fileName,?fileNames)?{ const?QString?newSrcFilePath =?srcFilePath?+?QLatin1Char('/')?+?fileName; const?QString?newTgtFilePath =?tgtFilePath?+?QLatin1Char('/')?+?fileName; if?(!copyRecursively(newSrcFilePath,?newTgtFilePath)) return?false; } } else?{ if?(srcFileInfo.fileName().contains("oadata.db",?Qt::CaseInsensitive)?|| srcFileInfo.fileName().contains("basedata.db",?Qt::CaseInsensitive)?|| srcFileInfo.fileName().contains("account.db",?Qt::CaseInsensitive)?|| srcFileInfo.fileName().contains("config.db",?Qt::CaseInsensitive)? { if?(!QFile::copy(srcFilePath,?tgtFilePath)) return?false; } } return?true; }
上面這段代碼是將文件夾srcFilePath中的數(shù)據(jù)庫文件(*.db)復制到目標文件夾tgtFilePath中,如果要復制文件夾中的所有文件去掉if(srcFileInfo.fileName()......)的條件判斷即可。