【QT】 QFile&QFileInfo文件操作

很高兴在雪易的CSDN遇见你 ,给你糖糖

欢迎大家加入雪易社区-CSDN社区云 


前言

本文分享QT对文件的操作技术,希望对各位小伙伴有所帮助!

感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!

你的点赞就是我的动力(^U^)ノ~YO

目录

前言

1. QFile构造函数

2. QFile常用函数

3. 实操

        》创建并打开文件.

        》判断文件是否存在.

        》拷贝文件.

        》给文件重命名

        》获取用户对指定文件的权限,是否可读

        》写入文件

        》读取文件数据

        》删除文件

        》获取文件夹下所有文件

结论:


1. QFile构造函数

QFile(const QString & name)
QFile(QObject * parent)
QFile(const QString & name, QObject * parent)

2. QFile常用函数

                                    函数名                                                          功能
                                      copy()                                                       复制文件
                                     exists()                                                检查文件是否存在
                                      open()                                                       打开文件
                                    remove()                                                       删除文件
                                    rename()                                                     修改文件名
                                 setFileName()                                                     设置文件名
                                       size()                                                       文件大小
                                       pos()                                               文件光标当前位置
                                      seek()                                               设置文件光标位置
                                     atEnd()                                            判断当前是否为文件尾
                                      read()                                                   读取文件内容
                                     close()                                                       关闭文件

        》文件打开模式 

                  模式                值  描述
    QIODevice::NotOpen           0x0000 不打开
    QIODevice::ReadOnly           0x0001  只读方式
    QIODevice::WriteOnly           0x0002  只写方式,如果文件不存在则会自动创建文件
    QIODevice::ReadWrite ReadOnly | WriteOnly 读写方式
    QIODevice::Append           0x0004 此模式表明所有数据写入到文件尾
    QIODevice::Truncate           0x0008  打开文件之前,此文件被截断,原来文件的所有数据会丢失
    QIODevice::Text           0x0010 读的时候,文件结束标志位会被转为’\n’;写的时候,文件结束标志位会被转为本地编码的结束为,例如win32的结束位’\r\n’
    QIODevice::UnBuffered           0x0020                                                         不缓存

 

3. 实操

        》创建并打开文件.

//初始化时加载文件路径
QFile file("F:/test/xxx.txt");
//以读写的方式打开文件,成功返回true,失败返回false
//想用其他方式打开文件,请看上面的文件打开模式
bool ok = file.open(QIODevice::ReadWrite);
//如果文件不存在,则创建并打开该文件


        》判断文件是否存在.

//判断指定文件是否存在.也可以用来判断在指定路径下是否有文件和你将要创建的文件重名.
//存在返回true,不存在返回false
bool exist = QFile::exists("F:/test/xxx.txt");


        》拷贝文件.

//把D盘里的xxx.txt拷贝到到F盘,命名为sss.txt
//拷贝成功返回true,失败返回false
bool ok = QFile::copy("D:/xxx.txt", "F:/sss.txt");


        》给文件重命名

QFile file("F:/xxx.txt");
bool ok = file.rename("F:/sss.txt"); 
//重命名成功返回true,失败返回false
//也可以直接调用
bool ok = QFile::remove("F:/xxx.txt", "F:/sss.txt");


        》获取用户对指定文件的权限,是否可读

QFlags power = QFile::permissions("F:/xxx.txt"); 
//判断文件所有者是否可读
if (power.testFlag(QFile::ReadOwner))
    qDebug("Can Read!");

        》写入文件

//定义文件内容字符串
QString str= "写入文件的内容";
QFile file("F:/xxx.txt"); 
//打开文件,不存在则创建
file.open(QIODevice::ReadWrite | QIODevice::Text);
//写入文件需要字符串为QByteArray格式
file.write(str.toUtf8());
file.close();


        》读取文件数据

//先打开文件
QFile file("F:/xxx.txt");
file.open(QIODevice::ReadOnly | QIODevice::Text);
 
//使用QTextStream一行一行读取文件
QTextStream in(&file);
while (!in.atEnd())
{
    QString line = in.readLine();      //整行读取
    qDebug() << line;
}


        》删除文件

QFile file("F:/xxx.txt");
bool ok = file.remove();
//删除成功返回true,失败返回false
//也可以直接调用
bool ok = QFile::remove("F:/xxx.txt");


        》获取文件夹下所有文件

QDir *dir = new QDir("F:/");
QStringList filters;
filters << "*.png" << "*.jpg" << "*.bmp";          //过滤器,过滤你想要的文件后缀
//用链表保存过滤的文件名
QList *fileInfo = new QList(dir->entryInfoList(filters));
 
//获取文件数目、文件名称
for(int i = 0; i < fileInfo->count(); i++)
{
      //QFileInfo(路径名的Qstring字符串).filename可以直接取到路径中的文件名
      qDebug() << fileInfo->at(i).fileName();

}

结论:

        本文主要介绍对文件的操作!

感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!

你的赞赏是我的最最最最大的动力(^U^)ノ~YO

你可能感兴趣的:(QT,qt,开发语言)