The QDataStream class provides serialization of binary data to a QIODevice.

QDataStream提供了基于QIODevice的二进制数据的序列化。数据流是一种二进制流,这种流完全不依赖于底层操作系统、CPU 或者字节顺序(大端或小端)。例如,在安装了 Windows 平台的 PC 上面写入的一个数据流,可以不经过任何处理,直接拿到运行了 Solaris 的 SPARC 机器上读取。由于数据流就是二进制流,因此我们也可以直接读写没有编码的二进制数据,例如图像、视频、音频等。

文件写入代码如下:

    QFile file("file.dat");
    file.open(QIODevice::WriteOnly);
    QDataStream out(&file);
    out << QString("the answer is");
    out<< (qint32)40;
    file.close(); //不能少 或者用flush

为性能起见,数据只有在文件关闭时才会真正写入。因此,我们必须在最后添加close或者flush.
程序运行后,会在编译目录下生成file.dat文件。
1.png

文件读取代码如下:

    file.setFileName("file.dat");
    file.open(QIODevice::ReadOnly);
    QDataStream in(&file);
    QString str;
    qint32 a;
    in >> str >> a; //注意读写的顺序
    qDebug() << str << a;  
    file.close();

读写顺序:前面怎么写入,这里就应该怎么读,否则会出现未知错误.

由于是流,所以有时可能需要重新定位,我们可以用seek来定位
比如定位到起点

stream.device()->seek(0);

部分内容取自Qt学习之路2

最后修改:2019 年 06 月 26 日
如果觉得我的文章对你有用,请随意赞赏