bool QCallMScrip::copyDirectoryFiles(const QString& fromDir, const QString& toDir, QStringList filterlst,bool coverFileIfExist)
{
QDir sourceDir(fromDir);
QDir targetDir(toDir);
if (!targetDir.exists()) { /**< 如果目标目录不存在,则进行创建 */
if (!targetDir.mkdir(targetDir.absolutePath()))
return false;
}
sourceDir.setNameFilters(filterlst);
QFileInfoList fileInfoList = sourceDir.entryInfoList(filterlst);
foreach(QFileInfo fileInfo, fileInfoList) {
if (fileInfo.fileName() == "." || fileInfo.fileName() == "..")
continue;
if (fileInfo.isDir()) { /**< 当为目录时,递归的进行copy */
if (!copyDirectoryFiles(fileInfo.filePath(),
targetDir.filePath(fileInfo.fileName()),
filterlst,
coverFileIfExist))
return false;
}
else { /**< 当允许覆盖操作时,将旧文件进行删除操作 */
if (coverFileIfExist && targetDir.exists(fileInfo.fileName())) {
targetDir.remove(fileInfo.fileName());
}
// 进行文件copy
if (!QFile::copy(fileInfo.filePath(),
targetDir.filePath(fileInfo.fileName()))) {
return false;
}
}
}
return true;
}
//转移信号参数文件 文件批量转移
void QCallMScrip::moveParaFile()
{
//设置脚本所在目录和
//todo dir
dir->setNameFilters(filter);
//QList<QFileInfo>* fileInfoList = new QList<QFileInfo>(dir->entryInfoList(filter));
QFileInfoList fileInfoList = dir->entryInfoList(filter);
*/
copyDirectoryFiles(MFileDir, ParaDir, filter);
/*
for (size_t i = 0; i < fileInfoList->length(); i++) {
QString path = fileInfo->at(i).filePath();//得到指定文件路径
}
*/
}