使用QDataStream读写二进制文件。
具体用法见如下代码:
(1)头文件“mainwindow.h”的具体代码如下:
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
void fileFun();
}
(2)源文件“mainwindow.cpp”的具体代码如下:
#include "mainwindow.h"
#include <QtDebug>
#include <QFile>
#include <QDataStream>
#include <QDate>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
fileFun();
}
函数fileFun()完成主要功能,其具体代码如下:
void MainWindow::fileFun()
{
/*将二进制数据写到数据流 */
//每一个条目都以定义的二进制格式写入文 件。Qt中的很多类型,包括QBrush、QColor、QDateTime、QFont、QPixmap、QString、QVariant等都可 以写入数据流。QDataStream类写入了name(QString)、birthday(QDate)和age(qint32)这三个数据。注意, 在读取时也要使用相同的类型读出。
QFile file("binary.dat");
file.open(QIODevice::WriteOnly | QIODevice::Truncate);
QDataStream out(&file);
//将数据序列化
out << QString(tr("周何骏:"));
//字符串序列化
out << QDate::fromString("1996/09/25", "yyyy/MM/dd");
out << (qint32)23;
//整数序列化
file.close();
/*从文件中读取数据 */
//QDataStream类可以读取任意的以 QIODevice为基类的类生成对象产生的数据,如QTcpSocket、QUdpSocket、QBuffer、QFile、QProcess等 类的数据。可以使用QDataStream在QAbstractSocket一端写数据,在另一端使用QDataStream读取数据, 这样就免去了烦琐的高低字节转换工作
file.setFileName("binary.dat");
if(!file.open(QIODevice::ReadOnly))
{
qDebug()<< "error!";
return;
}
QDataStream in(&file);
//从文件中读出数据
QString name;
QDate birthday;
qint32 age;
in >> name >> birthday >> age;
//获取字符串和整数
qDebug() << name << birthday << age;
file.close();
}
(3)运行结果如下图所示: