c++ - 如何从文件中读取内容并将内容重写到qt中?
问题描述
我想从文件中读取内容,然后进行一些处理,将处理后的内容重写到该文件中。但是在我以QIODevice::Truncate
模式打开文件后,初始内容为空,但我需要初始内容:
QFile update_a_file("some/path/to/file.txt");
update_a_file.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Truncate);
QString fileContents(update_a_file.readAll());
qInfo("trial info %s", fileContents.toStdString().c_str());
输出日志中没有任何内容。
那么,如何在一个打开的调用中读取内容并重写(清空初始内容并写入新处理的内容)到文件中?或者qt中还有其他文件模式吗?
解决方案
使用 .打开文件时,您正在擦除文件的内容QIODevice::Truncate
。
从文档:
如果可能,设备会在打开之前被截断。设备的所有早期内容都将丢失。
尝试采取以下步骤:
- 打开不带
Truncate
. - 阅读内容
- 关闭文件
- 再次打开文件,这次是
Truncate
- 写下你修改过的内容。
- 关闭文件。
推荐阅读
- html - 带有 x 滚动的 CSS 绝对位置
- node.js - 如何使用 npm 和 nvm 安装 node-sass?
- r - R:遍历字符串变量
- r - 马尔可夫链中的转移概率之和不等于 1
- python - 检测图像中间的颜色(OpenCV、Python)
- .net-core - 当我只使用 ServiceStack 组件的 Core 版本时,如何解决 ServiceStack Framework/Core 冲突
- sonarqube - 如何将 SonarQube 6.4 连接到 SonarLint 3.5
- ios - Swift with Spritekit - 带旋钮的操纵杆教程
- orientdb - orientdb server.bat 启动错误:无法识别的选项:-d64
- angular - 当 node_modules 在不同的包中时,将项目与 webpack 捆绑时出现“找不到模块”错误