在Qt中存储二进制文件主要通过`QFile`和`QDataStream`类实现,具体方法如下:
一、核心方法总结
使用QFile进行文件操作 - 打开文件:`QFile file("filename", QIODevice::Readonly|QIODevice::WriteOnly)`
- 读写数据:`file.readAll()`(读取)、`file.write(data)`(写入)
使用QDataStream进行格式化读写
- 设置版本:`QDataStream out(&file); out.setVersion(QDataStream::Qt_5_7)`
- 写入数据:`out << int(123) << QByteArray("123")`(支持多种数据类型)
二、具体实现步骤
写入二进制文件
- 示例代码:
```cpp
QFile file("test.dat", QIODevice::Writeonly | QIODevice::Truncate);
if (!file.open()) {
qDebug() << "Failed to open file for writing";
return;
}
int aaa = 111;
double bbb = 222.222;
char ccc = "ccc";
file.write(reinterpret_cast file.write(reinterpret_cast file.write(ccc, 4); file.close(); ``` - 说明:使用`reinterpret_cast`将数据类型转换为字符指针,按字节顺序写入文件。 读取二进制文件 - 示例代码: ```cpp QFile file("test.dat", QIODevice::ReadOnly); if (!file.open()) { qDebug() << "Failed to open file for reading"; return; } QByteArray data = file.readAll(); file.close(); int aaa; double bbb; memcpy(&aaa, data.data() + 0, sizeof(int)); memcpy(&bbb, data.data() + sizeof(int), sizeof(double)); strcpy(ccc, data.data() + sizeof(int) + sizeof(double)); ``` - 说明:按写入顺序读取数据,使用`memcpy`将字节转换回原始数据类型。 三、注意事项 数据对齐: 确保读写顺序一致,避免因数据类型大小不同导致错误。 文件后缀 错误处理:实际应用中需添加文件打开失败的检查逻辑。 通过以上方法,可高效地在Qt中进行二进制文件的读写操作。