最近做项目时,需要将从服务端下载的配置数据保存到本地文件,并保证将该本地文件重新导入到服务端后能够使服务端回复原来的配置,最开始使用的保存数据到文件代码:
QFile file(filename);
file.open(QIODevice::ReadWrite|QIODevice::Text)
file.write(downloaddata);
但是发现重新将该文件导入到服务端后,服务端恢复的不是原来的配置,然后用正确的配置文件和我代码保存的文件对比,发现用上述方式保存的文件里面内容的所有的行结束符被换成了换符/n,导致和正确的配置文件发生了差异。经查询发现这是QIODevice::Text引起的,将QIODevice::Text换成QIODevice::Truncate可以修复该问题。
ps:QT帮助文档中对QIODevice::Text描述是说在读取时,将行结束符转换成 \n;在写入时,将行结束符转换成本地格式,例如 Win32 平台上是 \r\n