1. bool copyDir(const QString &source, const QString &destination, bool override)
  2. {
  3. QDir directory(source);
  4. if (!directory.exists())
  5. {
  6. return false;
  7. }
  8.  
  9. QString srcPath = QDir::toNativeSeparators(source);
  10. if (!srcPath.endsWith(QDir::separator()))
  11. srcPath += QDir::separator();
  12. QString dstPath = QDir::toNativeSeparators(destination);
  13. if (!dstPath.endsWith(QDir::separator()))
  14. dstPath += QDir::separator();
  15.  
  16. bool error = false;
  17. QStringList fileNames = directory.entryList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden);
  18. for (QStringList::size_type i=; i != fileNames.size(); ++i)
  19. {
  20. QString fileName = fileNames.at(i);
  21. QString srcFilePath = srcPath + fileName;
  22. QString dstFilePath = dstPath + fileName;
  23. QFileInfo fileInfo(srcFilePath);
  24. if (fileInfo.isFile() || fileInfo.isSymLink())
  25. {
  26. if (override)
  27. {
  28. QFile::setPermissions(dstFilePath, QFile::WriteOwner);
  29. }
  30. QFile::copy(srcFilePath, dstFilePath);
  31. }
  32. else if (fileInfo.isDir())
  33. {
  34. QDir dstDir(dstFilePath);
  35. dstDir.mkpath(dstFilePath);
  36. if (!copyDir(srcFilePath, dstFilePath, override))
  37. {
  38. error = true;
  39. }
  40. }
  41. }
  42.  
  43. return !error;
  44. }

//另外一种

  1. // taken from utils/fileutils.cpp. We can not use utils here since that depends app_version.h.
  2. static bool copyRecursively(const QString &srcFilePath,
  3. const QString &tgtFilePath)
  4. {
  5. QFileInfo srcFileInfo(srcFilePath);
  6. if (srcFileInfo.isDir()) {
  7. QDir targetDir(tgtFilePath);
  8. targetDir.cdUp();
  9. if (!targetDir.mkdir(QFileInfo(tgtFilePath).fileName()))
  10. return false;
  11. QDir sourceDir(srcFilePath);
  12. QStringList fileNames = sourceDir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System);
  13. foreach (const QString &fileName, fileNames) {
  14. const QString newSrcFilePath
  15. = srcFilePath + QLatin1Char('/') + fileName;
  16. const QString newTgtFilePath
  17. = tgtFilePath + QLatin1Char('/') + fileName;
  18. if (!copyRecursively(newSrcFilePath, newTgtFilePath))
  19. return false;
  20. }
  21. } else {
  22. if (!QFile::copy(srcFilePath, tgtFilePath))
  23. return false;
  24. }
  25. return true;
  26. }
 

Qt 拷贝文件目录的更多相关文章

  1. Qt 拷贝内容到粘贴板 || 获取粘贴板内容

    QString source = ui->textEdit_code->toPlainText(); QClipboard *clipboard = QApplication::clipb ...

  2. qt 拷贝文件设置进度条

    /** * @brief FuncModuleWin::copyFile * @param fromFIleName 优盘里面的文件 * @param toFileName 拷贝到/bin里面的启动文 ...

  3. python 多进程与多线程配合拷贝文件目录

    版本一:使用shutil进行拷贝 # -*- coding: utf-8 -*- # @author: Tele # @Time : 2019/04/02 下午 3:09 # 待改进: # 1.拷贝逻 ...

  4. 利用IO和File类实现拷贝文件目录问题

    /* 复制文件夹 参数 File src,File dest */ public static void copy(File src,File dest){ if (src.isDirectory() ...

  5. 初学qt——数据库连接

    连接数据库我们需要有相应的dll文件,不同的数据库用不同的文件,对应的dll这里就不提供了,网上一搜一堆,就只说下这些文件的存放位置吧. 找到对应的dll文件后打开自己安装的qt的文件目录,将dll文 ...

  6. python 拷贝文件夹下所有的文件到指定文件夹(不包括目录)

    1.随便简单些写了一下.直接粘结代码,只是简单的实现一下,还很多需要完善和扩展的地方,比如忽略掉后缀文件,删除文件 如果排除的某些的话可以用: sourceF.find('.后缀')>0 2.注 ...

  7. SecureCRT 迁移到新环境,导出配置文件目录 转

    SecureCRT 打开SecureCRT,点击菜单栏的“选项”--“全局选项” 在打开的窗口中,选择“常规”,在右侧找到“配置文件夹”,这个就是SecureCRT的配置文件目录. 复制这个路径并且进 ...

  8. 树莓派USB存储设备自动挂载并通过脚本实现自动拷贝,自动播放视频,脚本自动升级等功能

    需求:首先需要树莓派自动挂载USB设备,然后扫描USB指定目录下文件,将相关文件拷贝至树莓派指定目录,然后通过omxplayer循环播放新拷贝文件视频 1. 树莓派实现USB存储设备自动挂载 树莓派U ...

  9. docker --命令

    1.开启服务 sudo docker start 服务名 2.预览列出所有的容器 sudo docker ps -a 3.进入文件 cd 4.预览文件目录 ls 5.预览文件内容 more 6.拷贝文 ...

随机推荐

  1. OVS local network 连通性分析 - 每天5分钟玩转 OpenStack(132)

    前面已经创建了两个 OVS local network,今天详细分析它们之间的连通性. launch 新的 instance "cirros-vm3",网络选择 second_lo ...

  2. 小兔JS教程(四)-- 彻底攻略JS数组

    在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...

  3. 简析服务端通过GT导入SHP至PG的方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要在浏览器端直接上传SHP后服务端进行数据的自动入PG ...

  4. [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化

    KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...

  5. C# 泛型

    C# 泛型 1.定义泛型类 在类定义中包含尖括号语法,即可创建泛型类: class MyGenericClass<T> { //Add code } 其中T可以遵循C#命名规则的任意字符. ...

  6. Android 调用百度地图API

    一.到 百度地图开发平台下载SDK http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download 1.点击自定义下载 2.下 ...

  7. 网站缓存技术总结( ehcache、memcache、redis对比)

    网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ...

  8. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  9. linux-linux top 命令各参数详解

    简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...

  10. 让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。

    写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...