zoukankan      html  css  js  c++  java
  • QT -- 文本文件的读写(QFile、QTextStream)

    一、文本文件

    文本文件是指纯文本格式存储的文件,例如:.cpp、.html、.xml文件等都是纯文本文件

    二、QT纯文本文件读写函数

    QT提供了两种读写纯文本文件的方法:

    ①QFile类的IODevice读写功能直接进行读写

    ②QFile和QTextStream结合起来,用流的方法进行文件读写

    三、QFile类

    功能:提供了 一个用于读/写文件的接口,它可以用来读/写文本文件、二进制文件和 Qt 资源的 I/0 设备

    QFile的其它功能,见文章:https://blog.csdn.net/qq_41453285/article/details/100019987

    构造函数

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

    open函数

    功能:用来打开一个文件对象

    参数:决定文件以何种方式打开(同方式之间可以配合使用,中间用 | 隔开),QIODevice是Qt所有I/O设备的基础类,为QFIle等类提供一个抽象接口

    • QIODevice::ReadOnly   //以只读的方式打开(文件不存在出错)

    • QIODevice::WriteOnly  //以只写的方式打开,打开时文件内原内容清空(文件不存在则创建)

    • QIODevice::ReadWrite  //以读写的方式打开文件

    • QIODevice::Append     //已追加的方式打开文件,新写入文件的数据添加到文件尾部

    • QIODevice::Truncate   //以重写的方式打开文件,文件打开时原有内容全部清空

    • QIODevice::Text       //以文本的方式打开文件。读取时,将' '翻译为换行符;写入时,将行结束符转换成本地格式

    (如Windows下是' '):

    bool QFile::open(OpenMode mode)

    其它用于读写的函数:

    close();          //关闭文件
    read();          //读文件,参数为读取的长度大小(必填)
    readLine();    //读取一行
    readAll();      //读取所有
    write();        //向文件中写入数据
    atEnd();       //判断是否到达文件尾
    seek();         //将文件指针定位到指定位置处
    pos();          //获取文件指针当前位置

    四、QTextStream类

    功能:QTextStream与IO读写设备结合,为数据读写提供了一些方便的方法的类,以流的方式读写文件

    QTextStream可以以QFile、QTemporaryFile、QBuffer、QTcpSocket、QUdpSocket等IO设备类结合使用

    构造函数 

    QTextStream()
    QTextStream(QIODevice *device)
    QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
    QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
    QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
    QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly)

    其他函数

    //将QTextStream对象设定为是否自动识别Unicode编码(例如文本中有汉字时)
    void QTextStream::setAutoDetectUnicode(bool enabled)
    atEnd(); //判断是否到达文件末尾
    readAll();  //读取全部内容
    readLine(); //一次只读取一行内容
    <<QString  //向QTextStream流中写入内容

    演示案例:

    //输入文本流
    QFile file("output.txt");
    if(file.open(QFile::WriteOnly | QFile::Truncate))
    {
        QTextStream out(&file);  //创建写入流
        out << "PI:" << qSetFieldWidth(10) << left << 3.1415926;//写入数据
        out << "
    insert new line";//写入数据
    }
    file.close();

    //输出文件流 QFile fileOpen("output.txt"); if(! fileOpen.open(QFile::ReadOnly | QIODevice::Text)) qDebug() << fileOpen.errorString(); QTextStream in(&fileOpen); //创建输出流 while(!in.atEnd()) { QString oneLine = in.readLine(); //读取一行 qDebug() << oneLine; }

    五、演示案例

  • 相关阅读:
    Java 8 – StringJoiner example
    Java – Generate random integers in a rangejava获取某个范围内的一个随机数
    Eclipse 中选中一个单词 ,其他相同的单词颜色就会变化
    JAR,WAR,EAR区别
    eclipse中java项目转成Web项目
    备忘
    iphone openssh
    如何解决Cydia提示错误
    加密备忘
    Ubuntu系统安装VMware Tools的简单方法
  • 原文地址:https://www.cnblogs.com/zzzsj/p/14601007.html
Copyright © 2011-2022 走看看