1 开发环境
在介绍内容之前,先说明一下开发环境,如下图:
Qt版本:Qt5.3.2;
Qt开发工具:Qt Creater 3.2.1;
Qt构建工具:Desktop Qt 5.3 MinGW 32bit;
Qt开发平台:Windows 7 64bit。
2 QFile
QFile是Qt中的文件操作类,可以用来记录日志、记录调试信息、记录二进制数据等。
2.1 读写文本文件
读写文本文件主要用到了QFile的三个接口和QTextStream辅助QFile来读写文件。
QFile的三个接口如下:
- QFile(const QString & name)
- bool QFile::open(OpenMode mode) [virtual]
- void QFileDevice::close() [virtual]
QFile fileW("my.txt");
if (fileW.open(QIODevice::WriteOnly|QIODevice::Append|QIODevice::Text))
{
QTextStream out(&fileW);
out << QString("12345abcde一二三四五\n");
}
fileW.close();
QFile fileR("my.txt");
if (fileR.open(QIODevice::ReadOnly|QIODevice::Text))
{
QTextStream in(&fileR);
while (!in.atEnd()) { qDebug("txt in: %s", qPrintableU8(in.readLine())); }
}
fileR.close();
2.2 读写二进制文件
读写文本文件主要用到了与读写文本文件一样的QFile的三个接口和QDataStream辅助QFile来读写文件。
#define BINDATA_LEN 16
char binData[BINDATA_LEN] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
QFile fileBinW("my.dat");
if (fileBinW.open(QIODevice::WriteOnly|QIODevice::Truncate))
{
QDataStream out(&fileBinW);
out.writeRawData(binData, BINDATA_LEN);
}
fileBinW.close();
QFile fileBinR("my.dat");
if (fileBinR.open(QIODevice::ReadOnly))
{
char * binDataR = new char [BINDATA_LEN];
QDataStream in(&fileBinR);
in.readRawData(binDataR, BINDATA_LEN);
for (int i=0; i<BINDATA_LEN; i++) { qDebug("binData[%02d]: 0x%02x", i, binDataR[i]); }
delete [] binDataR;
}
在读二进制文件时,不像读文本文件那样,需要预先知道读入多大空间的二进制数据,得用new申请空间来存放读入的二进制数据,读完后不再使用申请的空间时,一定记得要delete申请的指针。