简述
在QT中,我们时常要对文件进行各种操作,比如文件的创建、写入、拷贝和删除等等,这些都要用到QFile类。
QFile类提供了读写文件的接口。一般情况下,我们可以直接在调用构造函数的时候传递文件名,这是比较方便的方法。或者使用QFile创建对象,再调用setFileName()方法来设置文件路径。其中文件名中的路径分隔符要求必须是'/',其他分隔符QFile不支持。
常用接口
QFile构造函数:
QFile(const QString & name)
QFile(QObject * parent)
QFile(const QString & name, QObject * parent)
QFile的常用函数:
文件打开模式:
代码之路
1.创建并打开文件.
//初始化时加载文件路径 QFile file("F:/test/xxx.txt"); //以读写的方式打开文件,成功返回true,失败返回false //想用其他方式打开文件,请看上面的文件打开模式 bool ok = file.open(QIODevice::ReadWrite); //如果文件不存在,则创建并打开该文件
2.判断文件是否存在.
//判断指定文件是否存在.也可以用来判断在指定路径下是否有文件和你将要创建的文件重名. //存在返回true,不存在返回false bool exist = QFile::exists("F:/test/xxx.txt");
3.拷贝文件.
//把D盘里的xxx.txt拷贝到到F盘,命名为sss.txt //拷贝成功返回true,失败返回false bool ok = QFile::copy("D:/xxx.txt", "F:/sss.txt");
4.给文件重命名
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.获取用户对指定文件的权限,是否可读
QFlags<QFileDevice::Permission> power = QFile::permissions("F:/xxx.txt"); //判断文件所有者是否可读 if (power.testFlag(QFile::ReadOwner)) qDebug("Can Read!");
6.写入文件
//定义文件内容字符串 QString str= "写入文件的内容"; QFile file("F:/xxx.txt"); //打开文件,不存在则创建 file.open(QIODevice::ReadWrite | QIODevice::Text); //写入文件需要字符串为QByteArray格式 file.write(str.toUtf8()); file.close();
7. 读取文件数据
//先打开文件 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.删除文件
QFile file("F:/xxx.txt"); bool ok = file.remove(); //删除成功返回true,失败返回false //也可以直接调用 bool ok = QFile::remove("F:/xxx.txt");
9.获取文件夹下所有文件
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

