在 Qt 中,使用 `QFile` 以二进制方式存储数据时,需注意以下要点:
一、核心方法
使用 `QIODevice::WriteOnly` 或 `QIODevice::ReadOnly` 标志打开文件,确保以二进制模式读写。
写入二进制数据
- 直接写入: 使用 `file.write(bydata, bydata.length())` 将 `QByteArray` 数据直接写入文件。 - 使用 QDataStream
使用 `file.readAll()` 一次性读取整个文件内容到 `QByteArray`,或通过 `QDataStream` 逐个读取数据类型。
二、注意事项
避免文本转换:
写入二进制数据时,不要将 `QString` 等文本类型转换为字符指针(如 `toStdString().c_str()`),否则会插入不可见字符。- 关闭文件:操作完成后需调用 `file.close()` 确保数据正确写入。
三、示例代码
```cpp
// 写入二进制文件
QFile file("test.bin");
if (file.open(QIODevice::WriteOnly)) {
QString name = "示例数据";
quint32 value = 12345;
file.write(name.toStdString().constData(), name.size());
file.write(reinterpret_cast file.close(); } // 读取二进制文件 QFile file("test.bin"); if (file.open(QIODevice::ReadOnly)) { QByteArray bydata = file.readAll(); file.close(); QString name = bydata.left(bydata.indexOf('0')); // 假设数据以 null 结尾 quint32 value; memcpy(&value, bydata.data() + bydata.indexOf('0'), sizeof(value)); // 处理读取的数据 } ``` 通过以上方法,可确保二进制数据的正确读写,避免因格式问题导致文件无法打开。