Qt 实现的拷贝文件夹的函数

发布于 2022-09-14 01:20:39 字数 2754 浏览 13 评论 1

  1. #include <QDir>
  2. #include <QFileInfoList>
  3. /**
  4.   qCopyDirectory -- 拷贝目录
  5.   fromDir : 源目录
  6.   toDir   : 目标目录
  7.   bCoverIfFileExists : ture:同名时覆盖  false:同名时返回false,终止拷贝
  8.   返回: ture拷贝成功 false:拷贝未完成
  9. */
  10. bool qCopyDirectory(const QDir& fromDir, const QDir& toDir, bool bCoverIfFileExists)
  11. {
  12.     QDir formDir_ = fromDir;
  13.     QDir toDir_ = toDir;
  14.     if(!toDir_.exists())
  15.     {
  16.         if(!toDir_.mkdir(toDir.absolutePath()))
  17.             return false;
  18.     }
  19.     QFileInfoList fileInfoList = formDir_.entryInfoList();
  20.     foreach(QFileInfo fileInfo, fileInfoList)
  21.     {
  22.         if(fileInfo.fileName() == "." || fileInfo.fileName() == "..")
  23.             continue;
  24.         //拷贝子目录
  25.         if(fileInfo.isDir())
  26.         {
  27.             //递归调用拷贝
  28.             if(!qCopyDirectory(fileInfo.filePath(), toDir_.filePath(fileInfo.fileName())))
  29.                 return false;
  30.         }
  31.         //拷贝子文件
  32.         else
  33.         {
  34.             if(bCoverIfFileExists && toDir_.exists(fileInfo.fileName()))
  35.             {
  36.                 toDir_.remove(fileInfo.fileName());
  37.             }
  38.             if(!QFile::copy(fileInfo.filePath(), toDir_.filePath(fileInfo.fileName())))
  39.             {
  40.                 return false;
  41.             }
  42.         }
  43.     }
  44.     return true;
  45. }

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧竹 2022-09-14 17:31:39

还真没有想过用qt作这个功能阿, 一般就做下界面。功能全是不同的平台上自己写。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文