首页 > 解决方案 > 如何从文件中读取内容并将内容重写到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中还有其他文件模式吗?

标签: c++qt5

解决方案


使用 .打开文件时,您正在擦除文件的内容QIODevice::Truncate

从文档:

如果可能,设备会在打开之前被截断。设备的所有早期内容都将丢失。

尝试采取以下步骤:

  1. 打开不带Truncate.
  2. 阅读内容
  3. 关闭文件
  4. 再次打开文件,这次是Truncate
  5. 写下你修改过的内容。
  6. 关闭文件。

推荐阅读