• 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; }

    五、演示案例

  • 相关阅读:
    继续聊WPF
    窥探Swift之别具一格的Struct和Class
    窥探Swift之类的继承与类的访问权限
    iOS开发之地图与定位
    iOS开发之WebView
    iOS开发之版本控制(SVN)
    iOS开发之抽屉效果实现
    iOS开发之调用系统打电话发短信接口以及程序内发短信
    转:GitHub 万星推荐成长技术清单
    vmware漏洞之四:简评USE-AFTER-SILENCE: EXPLOITING A QUIETLY PATCHED UAF IN VMWARE
  • 原文地址:https://www.cnblogs.com/zzzsj/p/14601007.html
Copyright © 2020-2023  润新知