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ù)庫(kù)文件(*.db)復(fù)制到目標(biāo)文件夾tgtFilePath中,如果要復(fù)制文件夾中的所有文件去掉if(srcFileInfo.fileName()......)的條件判斷即可。





