Qt:把文件夹从A移动到B

QT 文件复制,移动(剪切)操作_qt剪切文件到指定路径-CSDN博客 

如何移动一个文件? 

    QString old_name=QString("D:\\c++\\c++优秀源码学习.txt");QString new_name=QString("D:\\c++优秀源码学习.txt");bool x= QFile::rename(old_name,new_name); //A路径移动到B路径qDebug()<<x;//true
    QString old_name=QString("D:\\c++\\c++优秀源码学习.txt");QString new_name=QString("D:\\123456\\c++优秀源码学习.txt");bool x= QFile::rename(old_name,new_name); //A路径移动到B路径qDebug()<<x;//false:因为没有D:\\123456这个目录。需要先创建该目录。

如何移动文件夹(包含里面的全部内容):

#include "widget.h"
#include <QApplication>
#include <QFile>
#include <QDebug>
#include <QDir>
#include <unistd.h>
QString old_path;
QString new_path;
void create_Multilevel_folder(char* path)
{int len = strlen(path);int _len = 0;for (int i = 0; i < len; ++i){if (path[i] == '/') {_len++;}}int* a = new int[_len];memset(a, 0, sizeof(a));for (int i = 0, b = 0; i < len; ++i){if (path[i] == '/') {a[b] = i;b++;}}for (int i = 0; i < _len; i++){char p[4096];strcpy(p, path);p[a[i]] = '\0';if (access(p, 0) == -1) {qDebug()<<"不存在,创建一个";mkdir(p);}}
}void print_Files(QString path)
{QDir dir(path);dir.setFilter(QDir::Files | QDir::NoDotAndDotDot);QStringList list = dir.entryList();for (int i = 0; i < list.count(); ++i){QString path1 = path + "/" + list[i];qDebug() <<"Old_Files:"<< path1;//替换QString path2=path1.right(path1.length()-old_path.length());QString path3=new_path+path2;qDebug()<<path3;qDebug()<<"New_Files:"<<QFile::rename(path1,path3);}
}
void print_files_and_dirs(QString path)
{QDir dir(path);dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);QStringList list = dir.entryList();for (int i = 0; i < list.count(); ++i){QString path1 = path + "/" + list[i];qDebug() <<"old_Dir:"<< path1;QString path2=path1.right(path1.length()-old_path.length());QString path3=new_path+path2+"/";qDebug()<<"new_Dir:"<<path3;create_Multilevel_folder(path3.toLocal8Bit().data());print_files_and_dirs(path1);//前面要加上前缀}print_Files(path);
}int main(int argc, char *argv[])
{QApplication a(argc, argv);old_path="D:/Qt/zip";new_path="D:/Qt/aaa";QString str=new_path+"/";create_Multilevel_folder(str.toLocal8Bit().data());print_files_and_dirs(old_path);return a.exec();
}

如何删除文件夹:

Qt拷贝文件、文件夹、创建文件夹、删除文件夹操作_qtmakedir文件夹-CSDN博客

    QString str="D:/Qt/a";QDir dir(str);if(!dir.exists()){qDebug()<<"not exists";}qDebug()<<dir.rmpath(dir.absolutePath());

当文件夹为空时,删除成功。

当文件夹不为空时,删除失败。

删除文件夹(递归)(文件夹中必须只有文件夹)

bool del_folder(QString str)
{QDir dir(str);if(!dir.exists()){qDebug()<<"not exists";}return dir.rmpath(dir.absolutePath());
}void del_folders(QString path)
{QDir dir(path);dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);QStringList list = dir.entryList();//qDebug()<<"count:"<<list.count();//qDebug()<<list;for (int i = 0; i < list.count(); ++i){QString path1 = path + "/" + list[i];qDebug() <<"old_Dir:"<< path1;del_folders(path1);}if(list.count()==0){del_folder(path);}
}
int main(int argc, char *argv[])
{QApplication a(argc, argv);old_path="D:/app/f";del_folders(old_path);//好像找不到.vs文件return a.exec();
}

但经过测试:.vs文件夹是删不掉的。

因为.vs 是隐藏文件夹

需要添加:QDir::Hidden字段。

dir.setFilter(QDir::Hidden|QDir::Dirs | QDir::NoDotAndDotDot);

功能:把文件夹从A移动到B,原位置删除。

#include "widget.h"
#include <QApplication>
#include <QFile>
#include <QDebug>
#include <QDir>
#include <unistd.h>
QString old_path;
QString new_path;
void create_Multilevel_folder(char* path)
{int len = strlen(path);int _len = 0;for (int i = 0; i < len; ++i){if (path[i] == '/') {_len++;}}int* a = new int[_len];memset(a, 0, sizeof(a));for (int i = 0, b = 0; i < len; ++i){if (path[i] == '/') {a[b] = i;b++;}}for (int i = 0; i < _len; i++){char p[4096];strcpy(p, path);p[a[i]] = '\0';if (access(p, 0) == -1) {qDebug()<<"不存在,创建一个";mkdir(p);}}
}void print_Files(QString path)
{QDir dir(path);dir.setFilter(QDir::Hidden|QDir::Files | QDir::NoDotAndDotDot);QStringList list = dir.entryList();for (int i = 0; i < list.count(); ++i){QString path1 = path + "/" + list[i];qDebug() <<"Old_Files:"<< path1;//替换QString path2=path1.right(path1.length()-old_path.length());QString path3=new_path+path2;qDebug()<<path3;qDebug()<<"New_Files:"<<QFile::rename(path1,path3);}
}
void print_files_and_dirs(QString path)
{QDir dir(path);dir.setFilter(QDir::Hidden|QDir::Dirs | QDir::NoDotAndDotDot);QStringList list = dir.entryList();for (int i = 0; i < list.count(); ++i){QString path1 = path + "/" + list[i];qDebug() <<"old_Dir:"<< path1;QString path2=path1.right(path1.length()-old_path.length());QString path3=new_path+path2+"/";qDebug()<<"new_Dir:"<<path3;create_Multilevel_folder(path3.toLocal8Bit().data());print_files_and_dirs(path1);//前面要加上前缀}print_Files(path);
}
bool del_folder(QString str)
{QDir dir(str);if(!dir.exists()){qDebug()<<"not exists";}return dir.rmpath(dir.absolutePath());
}void del_folders(QString path)
{QDir dir(path);dir.setFilter(QDir::Hidden|QDir::Dirs | QDir::NoDotAndDotDot);QStringList list = dir.entryList();//qDebug()<<"count:"<<list.count();//qDebug()<<list;for (int i = 0; i < list.count(); ++i){QString path1 = path + "/" + list[i];qDebug() <<"old_Dir:"<< path1;del_folders(path1);}if(list.count()==0){del_folder(path);}
}int main(int argc, char *argv[])
{QApplication a(argc, argv);old_path="D:/VS/ConsoleApplication1";new_path="D:/VS/ConsoleApplication2";QString str=new_path+"/";create_Multilevel_folder(str.toLocal8Bit().data());print_files_and_dirs(old_path);del_folders(old_path);return a.exec();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【TypeScript基础知识点】的讲解

TypeScript基础知识点 TypeScript基础知识点 TypeScript基础知识点 TypeScript 是一种由 Microsoft 开发和维护的开源编程语言&#xff0c;它是 JavaScript 的一个超集&#xff0c;添加了可选的静态类型和基于类的面向对象编程&#xff0c;以下是一些 TypeScript 的基础知识点…

【C++】模板初阶 | 泛型编程 | 函数模板 | 类模板

目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 【本节目标】 1. 泛型编程 2. 函数模板 3. 类模板 1. 泛型编程 如何实现一…

SpringCloud(16)之SpringCloud OpenFeign和Ribbon

一、Spring Cloud OpenFeign介绍 Feign [feɪn] 译文 伪装。Feign是一个轻量级的Http封装工具对象,大大简化了Http请求,它的使用方法 是定义一个接口&#xff0c;然后在上面添加注解。不需要拼接URL、参数等操作。项目主页&#xff1a;GitHub - OpenFeign/feign: Feign makes w…

车载测试面试:各大车企面试题汇总(含答案)

本博主协助百名人员成功进军车载行业 TBOX 深圳 涉及过T-BOX测试吗Ota升级涉及的台架环境是什么样的&#xff1f;上车实测之前有没有一个仿真环境台架环境都什么零部件T-BOX了解多少Linux和shell有接触吗 单片机uds诊断是在实车上座的吗 uds在实车上插的那口 诊断仪器是哪个…

java课设之简易版客房管理系统(mvc三层架构)

&#xff08;一&#xff09;、系统概述&#xff1a; 客房管理系统是一个用于管理酒店客房信息的程序&#xff0c;主要功能包括客房信息录入、客房状态查询、客房订单管理&#xff0c;客房的预定功能。 &#xff08;二&#xff09;、功能说明&#xff1a; 1.登录&#xff1a;管理…

如何在Linux部署OpenGauss数据管理系统并实现公网访问内网数据

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合…

数字化转型导师坚鹏:如何制定政府数字化转型年度培训规划

如何制定政府数字化转型年度培训规划 ——以推动政府数字化转型战略落地为核心&#xff0c;实现知行果合一 课程背景&#xff1a; 很多政府都在开展政府数字化转型培训工作&#xff0c;目前存在以下问题急需解决&#xff1a; 缺少针对性的政府数字化转型年度培训规划 不清…

【pytorch】pytorch模型可复现设置

文章目录 序言1. 可复现设置代码2. 可复现设置代码解析2.1 消除python与numpy的随机性2.2 消除torch的随机性2.3 消除DataLoader的随机性2.4 消除cuda的随机性2.5 避免pytorch使用不确定性算法2.6 使用pytorch-lightning2.7 特殊情况 序言 为了让模型在同一设备每次训练的结果…

复旦大学MBA聚劲联合会:洞见智慧,拓宽思维格局及国际化视野

12月2日&#xff0c;“焕拥时代 俱创未来”聚劲联合会俱创会年度盛典暨俱乐部募新仪式圆满收官。16家复旦MBA俱乐部、200余名同学、校友、各界同仁齐聚复旦管院&#xff0c;一起在精彩纷呈的圆桌论坛里激荡思想&#xff0c;在活力四射的俱乐部风采展示中凝聚力量。      以…

08 Redis之集群的搭建和复制原理+哨兵机制+CAP定理+Raft算法

5 Redis 集群 2.8版本之前, Redis采用主从集群模式. 实现了数据备份和读写分离 2.8版本之后, Redis采用Sentinel哨兵集群模式 , 实现了集群的高可用 5.1 主从集群搭建 首先, 基本所有系统 , “读” 的压力都大于 “写” 的压力 Redis 的主从集群是一个“一主多从”的读写分…

海莲花APT组织样本跟踪分析

APT组织简介 OceanLotus(海莲花)APT组织是一个长期针对中国及其他东亚、东南亚国家(地区)政府、科研机构、海运企业等领域进行攻击的APT组织&#xff0c;该组织也是针对中国境内的最活跃的APT组织之一&#xff0c;该组织主要通过鱼叉攻击和水坑攻击等方法&#xff0c;配合多种…

计算机网络面经-HTTP的8种请求方式

简单介绍 HTTP是超文本传输协议&#xff0c;其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口&#xff0c;这个端口指的是服务端的端口&#xff0c;而客户端使用的端口是动态分配的。当我们没有指定端口访问时&#xff0c;浏览器会默认帮我们添加80端口。我们…

2.21日学习打卡----初学Nginx(一)

2.21日学习打卡 目录: 2.21日学习打卡一. Nginx是什么&#xff1f;概述Nginx 五大应用场景HTTP服务器正向代理反向代理正向代理与反向代理的区别&#xff1a;负载均衡动静分离 为啥使用Nginx? 二.下载Nginx&#xff08;linux&#xff09;环境准备下载Nginx和安装NginxNginx源码…

新手搭建服装小程序全攻略

随着互联网的快速发展&#xff0c;线上购物已经成为了人们日常生活中不可或缺的一部分。服装作为人们日常消费的重要品类&#xff0c;线上化趋势也日益明显。本文将详细介绍如何从零开始搭建一个服装小程序商城&#xff0c;从入门到精通的捷径&#xff0c;帮助你快速掌握小程序…

面试前端性能优化八股文十问十答第一期

面试前端性能优化八股文十问十答第一期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;CDN的概念 CDN&…

专项:PID控制方法深究

1.前言 PID在工业界随处可见。其的原理是什么&#xff1f; 2.数学物理代表意义 PID全名为比例积分微分控制器。顾名思义&#xff0c;表明其由三个控制器组成。 一是P&#xff0c;其代表比例&#xff08;Proportional&#xff09;; 二是I&#xff0c;其代表积分&#xff08;I…

《TCP/IP详解 卷一》第2章 Internet地址结构

目录 2.1 引言 2.2 表示IP地址 2.3 基本的IP地址结构 单播地址 全球单播地址&#xff1a; 组播地址 任播地址 2.4 CIDR和聚合 2.5 特殊用途地址 2.6 分配机构 2.7 单播地址分配 2.8 与IP地址相关的攻击 2.9 总结 2.1 引言 2.2 表示IP地址 IPv4地址&#xff1a;3…

【数据分享】不同共享社会经济路径下中国未来280个城市土地数量数据集(免费获取)

了解未来城市土地数量对于城市规划、社会经济发展和气候变化研究具有重要意义。通过分析不同共享社会经济路径下中国未来城市土地数量的数据&#xff0c;可以为未来城市发展趋势和可持续规划提供科学依据。 本次我们给大家带来的是不同共享社会经济路径下中国未来城市土地数量…

【退役之重学前端】使用vite+vue3+vue-router,重构react+react-router前后端分离的商城后台管理系统

前言&#xff1a; 对前端各个技术板块&#xff0c;HTML、CSS、JavaScript、ES6、vue家族&#xff0c;整体上能“摸其大概”。笔者计划重构一个基于react的商城后台管理系统。 —— 2024年2月16日 技术选型 #语言和框架 vue3sassbootstrapES7 #架构 前后端分离分层架构模块化…

C# 实现网页内容保存为图片并生成压缩包

目录 应用场景 实现代码 扩展功能(生成压缩包) 小结 应用场景 我们在一个求职简历打印的项目功能里&#xff0c;需要根据一定的查询条件&#xff0c;得到结果并批量导出指定格式的文件。导出的格式可能有多种&#xff0c;比如WORD格式、EXCEL格式、PDF格式等&#xff0c;…