根据需求写的一个文件备份的需求:将目录A里db文件复制到目录B下的(要求:复制时会比较判断B是否有该db文件,不存在直接到最后一步复制,存在就会判断文件修改时间更短或者文件大小更大的文件需要备份到目录C中,如果B中的修改时间更短会先将该文件复制到目录C下备份并以编号和备份时间命名该文件,如果A中修改时间更短则不需要备份,然后删除B中该文件;B中没有该文件,最后将A中该文件复制到B中)
bool MainWindow::copyDirectoryFiles(const QString &fromDir, const QString &toDir, const QString &backDir,bool coverFileIfExist)
{
    QDir sourceDir(fromDir);
    QDir targetDir(toDir);
    QDir backupDir(backDir);
    string s = fromDir.toStdString();

    QFileInfoList fileInfoList = sourceDir.entryInfoList();
    foreach(QFileInfo fileInfo, fileInfoList){
        if(fileInfo.fileName() == "." || fileInfo.fileName() == "..")/** Dir.entryInfoList的返回值前两位是.和.. */
                    continue;

        if(fileInfo.isDir()){    /**< 当为目录时忽略 */
            continue;
        }else{            /**< 当允许覆盖操作时,将旧文件进行删除操作 */
            string ss = fileInfo.fileName().toStdString();
            if(coverFileIfExist && targetDir.exists(fileInfo.fileName()) ){//允许覆盖操作 且判断目录下是否涵盖此文件
                QString spath = targetDir.path()+"\\"+fileInfo.fileName();  
                QFileInfo ff(spath);//db位置
                if(fileInfo.size()>ff.size() || fileInfo.lastModified()>ff.lastModified()){
                    //qtime = QDateTime::currentDateTime();
                    //备份db以料号+备份时间命名
                    QString dateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss");
                    QString time= QString("%1").arg(dateTime);
                    if(!QFile::copy(targetDir.filePath(fileInfo.fileName()),backupDir.filePath(fileInfo.baseName()+time+"."+fileInfo.suffix()))){
                            return false;
                    }
                    targetDir.remove(fileInfo.fileName());
                }
            }

            // 进行文件copy
            if(QFile::copy(fileInfo.filePath(),targetDir.filePath(fileInfo.fileName()))){
                vifunc.mDLLLogCatfunc("此次更新的DBTEMP:"+ss,eLog_Normal);
            };
        }
    }
    return true;
}

c++ copyfile相关推荐

  1. VC++ CopyFile函数使用方法

    BOOL CopyFile( LPCTSTR lpExistingFileName, // pointer to name of an existing file LPCTSTR lpNewFileN ...

  2. python中shutil.copyfile的用法_Python shutil.copyfile()用法及代码示例

    Python中的Shutil模块提供了许多对文件和文件集合进行高级操作的功能.它属于Python的标准实用程序模块.此模块有助于自动执行文件和目录的复制和删除过程. shutil.copyfile() ...

  3. windows API函数copyfile

    本文来自:www.kttec.net CopyFile VB声明 Declare Function CopyFile Lib "kernel32" Alias "Copy ...

  4. java ajax上传图片插件_java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile....

    个人笔记,以备后用. 表体代码: 查看图片 js代码(记得要引入jquery库和ajaxfileupload库): //上传文件id号 function fileUpload(uploadFileId ...

  5. VC++CopyFile函数的用法

    CopyFile函数定义在Windows.h中,使用时要include之: CopyFile()使用如下: #include <Windows.h>int main() {CopyFile ...

  6. 解决shutil.copyfile常见错误:PermissionError: [Errno 13] Permission denied

    出错原因 shutil的copyfile函数复制文件常常容易出错,出现如PermissionError Permission denied 等错误,但导致该问题的原因,有时并非文件权限不足,而是src ...

  7. python copy函数用法_python shutil模块函数copyfile和copy的区别

    展开全部 copyfile(src, dst) #src, dst 都需是文件名, 如果dst 存在或无权限,会抛出异常 copy(src, dst) #dst 可以是目录名. shutil.copy ...

  8. 学习笔记2—MATLAB的copyfile技巧

    clear clc %一.新建文件夹, %二.将原始路径下的数据剪切到新建文件夹中 path = ('E:\DFC_DMN_ASD_DATA_res\Cluster_hcc\4,6,8\Cluster ...

  9. CopyFile复制单个文件和复制指定路径下所有文件

    CopyFile复制单个文件和复制指定路径下所有文件 1.CopyFile复制单个文件 2.CopyFile复制指定路径下所有文件 1.CopyFile复制单个文件 原型: BOOL CopyFile ...

  10. VC++ 利用CreateFile、ReadFile和WriteFile实现CopyFile

    1. CreateFile:这是一个多功能的函数,可打开或创建以下对象,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道. 参照:http://www.cppblo ...

最新文章

  1. 秀秀偶新购的转角工作台
  2. ubuntu12.04 升级 automake
  3. Android 获取光线强弱,开启闪光灯,关闭闪光灯
  4. 领域应用 | 企业效益最大化的秘密:知识图谱
  5. PHP获取图片宽度高度、大小尺寸、图片类型、用于布局的img属性
  6. android进程(关闭自己和关闭其他进程)
  7. 小小的 API 如何创造出 3.5 亿美元的价值?
  8. 表级约束和列级约束(二十)
  9. 程序员开发的“逆天”软件
  10. 简单快捷 Lambda数组打印
  11. APDU应用协议数据单元
  12. 偶极子阵列天线(带反射板)+单层天线罩
  13. springboot+爱心捐赠小程序 毕业设计-附源码211711
  14. windows下操作Nginx基本命令
  15. QWT--滚轮放大缩小和拖拽视窗
  16. vue 大量图片展示_Ant Design of Vue 展示多张图片
  17. 甘特图(Gantt Chart)绘制方法
  18. 免申请直接用上 IDEA 新 UI,只需要这三步配置
  19. java.swing 飞机大战小游戏
  20. 前端html5学习小总结

热门文章

  1. Float 数字的几个特殊数值:Nan, infinite, -infinite, 0
  2. 冠群金辰总经理孙冠军:主动出击防病毒是幻想?
  3. Python手记-11:PyQuery爬取豆瓣电影评论
  4. 易维帮助台如何“重新定义客户服务”?
  5. 12306 出票的一种算法设计
  6. 你很年轻,理应更快——听京东宣讲会有感
  7. Python 世界的黑客帝国
  8. 理特预计至2035年商业航空市场的价值链和利润分配将迎来巨变
  9. CA服务器搭建网页出现HTTP 错误 500.19 - Internal Server Error错误代码0x80070003 无法读取配置文件
  10. PCRE的安装及使用