QFile
QFile提供一个用于读/写的接口,是一个可以用来读/写二进制文件的Qt资源的I/O设备,QFile可以单独使用,一般配合QTextStream或QDataStream
输入文件路径时最好使用"/"作为分隔符
构造函数:
常用的函数:因为继承自QIODevice函数大多来自QIODevice
| open() | 打开 | 
| close() | 关闭文件 | 
| flush() | 刷新 | 
| setFileName() | 设置打开的文件 | 
| exist() | 判断文件是否存在 | 
| remove() | 删除该文件 | 
| size() | 文件大小 | 
| atend() | 是否在文件末尾 | 
| pos() | 获取位置 | 
| seek() | 调整位置 | 
| resize() | 调整文件大小 | 
| moveToTrash () | 垃圾箱 | 
读取文件操作:
- read
- readLine
- readAll
- getChar(char *c) 读取一个字符到c
写入文件操作:
- write
- putChar
- ungetChar 撤销 getChar的操作
打开一个文件读取一行内容:
文件内容为:

    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::ReadOnly);//设置自读打开方式
    if(file.isOpen())//如果打开成功
    {
        qDebug()<<file.readLine();//读取一行
    }
    file.close();//关闭文件
注意读取结果出现\r\n
解决方法:需要在打开方式中添加 QIODevice::Text
- 将 Windows 样式的行终止符 (“\r\n”) 转换为 C++ 样式的行终止符 (“\n”)
    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::ReadOnly|QIODevice::Text);//设置自读打开方式
    if(file.isOpen())//如果打开成功
    {
        qDebug()<<file.readLine();//读取一行
    }
    file.close();//关闭文件
读取全部内容:
把qDebug()<<file.readLine();//读取一行 改为
qDebug()<<file.readAll();//读取全部
也可以使用循环一行一行读取全部内容:
    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::ReadOnly|QIODevice::Text);//设置自读打开方式
    if(file.isOpen())//如果打开成功
    {
       while(!file.atEnd())//判断是否为文件末尾
       {
           qDebug()<<file.readLine();
       }
    }
    file.close();//关闭文件
获取一个字符
获取一个字符后,读取位置会往后挪一位。
    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::ReadOnly|QIODevice::Text);//设置自读打开方式
    if(file.isOpen())//如果打开成功
    {
        qDebug()<<file.pos();//初始位置为0
        char c;
        qDebug()<<file.getChar(&c);
        qDebug()<<c;//输出该字符
        qDebug()<<file.pos();//输出目前的位置
    }
    file.close();//关闭文件 
 
使用seek()调整读取位置
    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::ReadOnly|QIODevice::Text);//设置自读打开方式
    if(file.isOpen())//如果打开成功
    {
        char c;
        qDebug()<<file.getChar(&c);//获取一个字符,读取成功返回true
        qDebug()<<c;//输出该字符
        qDebug()<<file.pos();//输出目前的位置
        file.seek(20);//调整到第20个位置
        file.getChar(&c);//读取一个字符
        qDebug()<<c;//输出该字符
        qDebug()<<file.pos();//输出目前的位置
        
    }
    file.close();//关闭文件
写入内容到文件:
- QIODevice::Append 将所有数据写入文件末尾
- QIODevice::WriteOnly 写入模式(单独使用相当于截断)除非与 ReadOnly、Append 或 NewOnly 结合使用
写入到文件末尾:
    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::WriteOnly|QIODevice::Append);//设置写入并追加
    if(file.isOpen())//如果打开成功
    {
        file.write("\n6666666");//将数据写入
    }
    file.close();//关闭文件 
写入到任何位置:
通过seek()设置写入位置
    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::WriteOnly|QIODevice::ReadOnly|QIODevice::Text);//
    if(file.isOpen())//如果打开成功
    {
        file.write("\n6666666");//将数据写入到开头
        file.seek(20);//设置位置
        file.write("\n6666666");//将数据写入20的位置
    }
    file.close();//关闭文件 
 


![[Redis]-持久化方式](https://img-blog.csdnimg.cn/0ae631343a824782ba957af895c3faa4.png)
















