• 4490阅读
  • 3回复

如何只修改文本文件的前几行数据 [复制链接]

上一主题 下一主题
离线wjz2047
 

只看楼主 倒序阅读 楼主  发表于: 2013-11-02
现在我有一个txt文件,有很多行数据,现在我想修改前3行的数据,(只修改前三行),请问要怎么做呢?
我看到一段话,大家看对不对:

QFile data("file.txt");
if (data.open(QFile::WriteOnly | QIODevice::Truncate)) {
    QTextStream out(&data);
    out << "The answer is " << 42;
}
我们在这里使用了 QFile::WriteOnly | QIODevice::Truncate,也就是以只写并且覆盖已有内容的形式操作文件。注意,QIODevice::Truncate 并不是将文件内容清空,而是在文件开头处开始写入。要理解这一点,假设原文件内容是1111111111,我们想要写入222,如果设置为 QIODevice::Append,则处理结果将会是 1111111111222,这是很容易理解的;如果设置为 QIODevice::Truncate,那么文件内容将会是 2221111111。
我试了一下,发现不对,它的效果还是像先把整个文件清空再写入新数据
大家有什么方法呢?
离线dbzhang800

只看该作者 1楼 发表于: 2013-11-02
没有办法只修改文本文件的某几行而保持其他行不动。除非你保持修改前后长度不变。

无论使用哪种语言和库,都是这种效果。
离线fomalhaut

只看该作者 2楼 发表于: 2013-11-02
先把第三行以后的内容读出来,然后修改前三行,最后再把后面的内容写进去。
离线wjz2047

只看该作者 3楼 发表于: 2013-11-02
回 2楼(fomalhaut) 的帖子
听起来不错,我试试
快速回复
限100 字节
 
上一个 下一个