QT 对文件的操作(创建、拷贝、写入、删除)
2023-09-11 14:14:13 时间
简述
在QT中,我们时常要对文件进行各种操作,比如文件的创建、写入、拷贝和删除等等,这些都要用到QFile类。
QFile类提供了读写文件的接口。一般情况下,我们可以直接在调用构造函数的时候传递文件名,这是比较方便的方法。或者使用QFile创建对象,再调用setFileName()方法来设置文件路径。其中文件名中的路径分隔符要求必须是'/',其他分隔符QFile不支持。
常用接口
QFile构造函数:
QFile(const QString & name)
QFile(QObject * parent)
QFile(const QString & name, QObject * parent)
QFile的常用函数:
文件打开模式:
代码之路
1.创建并打开文件.
C++
//初始化时加载文件路径
QFile file("F:/test/xxx.txt");
//以读写的方式打开文件,成功返回true,失败返回false
//想用其他方式打开文件,请看上面的文件打开模式
bool ok = file.open(QIODevice::ReadWrite);
//如果文件不存在,则创建并打开该文件
2.判断文件是否存在.
C++
//判断指定文件是否存在.也可以用来判断在指定路径下是否有文件和你将要创建的文件重名.
//存在返回true,不存在返回false
bool exist = QFile::exists("F:/test/xxx.txt");
3.拷贝文件.
C++
//把D盘里的xxx.txt拷贝到到F盘,命名为sss.txt
//拷贝成功返回true,失败返回false
bool ok = QFile::copy("D:/xxx.txt", "F:/sss.txt");
4.给文件重命名
C++
QFile file("F:/xxx.txt");
bool ok = file.rename("F:/sss.txt");
//重命名成功返回true,失败返回false
//也可以直接调用
bool ok = QFile::remove("F:/xxx.txt", "F:/sss.txt");
5.获取用户对指定文件的权限,是否可读
C++
QFlags<QFileDevice::Permission> power = QFile::permissions("F:/xxx.txt");
//判断文件所有者是否可读
if (power.testFlag(QFile::ReadOwner))
qDebug("Can Read!");
6.写入文件
C++
//定义文件内容字符串
QString str= "写入文件的内容";
QFile file("F:/xxx.txt");
//打开文件,不存在则创建
file.open(QIODevice::ReadWrite | QIODevice::Text);
//写入文件需要字符串为QByteArray格式
file.write(str.toUtf8());
file.close();
7. 读取文件数据
C++
//先打开文件
QFile file("F:/xxx.txt");
file.open(QIODevice::ReadOnly | QIODevice::Text);
//使用QTextStream一行一行读取文件
QTextStream in(&file);
while (!in.atEnd())
{
QString line = in.readLine(); //整行读取
qDebug() << line;
}
8.删除文件
C++
QFile file("F:/xxx.txt");
bool ok = file.remove();
//删除成功返回true,失败返回false
//也可以直接调用
bool ok = QFile::remove("F:/xxx.txt");
9.获取文件夹下所有文件
C++
QDir *dir = new QDir("F:/");
QStringList filters;
filters << "*.png" << "*.jpg" << "*.bmp"; //过滤器,过滤你想要的文件后缀
//用链表保存过滤的文件名
QList<QFileInfo> *fileInfo = new QList<QFileInfo>(dir->entryInfoList(filters));
//获取文件数目、文件名称
for(int i = 0; i < fileInfo->count(); i++)
{
//QFileInfo(路径名的Qstring字符串).filename可以直接取到路径中的文件名
qDebug() << fileInfo->at(i).fileName();
}
————————————————
版权声明:本文为CSDN博主「Sakuya__」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Sakuya__/article/details/87806135
相关文章
- QT中获取文件路径、文件名、后缀
- Qt操作xml文件(增删改功能)
- Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解
- QT中拷贝一个项目的ui界面到另一个项目时Ui.h文件时Ui.h文件控件变量错乱问题解决
- QT中QThread的各个方法,UI线程关系,事件关系详解(2)
- Qt工程pro文件的配置和头文件和库的添加
- 解决qt程序运行时的cannot create Qt for Embedded Linux data directory: /tmp/qtembedded-0出错情形
- 【QT】Qt获取前几天/后几天的时间
- 【QT】无法在QT创建者中打开包含文件pcap.h(C1083)
- 【QT】编码问题:QtCreator 编译时提示 warning C4819 的解决办法
- 【QT】Qt使用QJson生成json文件并保存
- 【QT】Qt多版本交叉编译所遇到的问题以及如何解决(重在思路过程)
- QT基础——QML及其相关的qt模块
- QT工具——qt for vs
- QT基础——授权协议
- Qt编写推流综合应用示例(文件推流/桌面推流/本地摄像头/网络摄像头/转发推流/视频分发)
- Qt编写推流综合应用示例-文件推流
- Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)
- Qt开发经验小技巧251-255
- Qt编写物联网管理平台33-设备面板
- 关于Qt国产化系统开发的几点总结
- Qt开发经验小技巧191-195
- Qt音视频开发15-mpv事件订阅
- Qt开源作品13-三套样式表
- Qt编写自定义控件57-直方波形图
- QT in VS 多语言实现(中英文切换,每个步骤都有截图,只有UTF8才能让Qt语言家正确读取。先qApp->removeTranslator,然后installTranslator,每个类都要写上槽函数RetranslateUI)
- 在64位的ubuntu 14.04 上开展32位Qt 程序开发环境配置(pro文件中增加 QMAKE_CXXFLAGS += -m32 命令)
- Modern Qt Development: The Top 10 Tools You Should Be Using
- Qt没有被正确安装,请运行make install问题的解决
- Qt之根据扩展名获取文件图标、类型
- Qt之字体文件(TTF)
- PyQt5利用Qt Designer制作一个可以拖动获取文件信息的页面
- Qt实现系统桌面目录下文件搜索的GUI:功能一:文件查找与现实
- 树莓派+QT+机械按键操作GUI界面
- 【正点原子Linux连载】第二十四章 智能家居物联网项目 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2
- 【Pycharm技巧】:Pycharm将Qt Designer的ui转py设置详解、及转换过的py文件如何运行问题详解、及Pycharm设置直接运行Qt Designer软件