• 8148阅读
  • 4回复

[提问]关于文件读写如何覆盖写入的问题 [复制链接]

上一主题 下一主题
离线thinkbad
 

只看楼主 倒序阅读 楼主  发表于: 2011-04-28

    QFile file(fileInfo.filePath());    
    if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
        return;
    QTextStream stream(&;file);
    stream.setCodec(QTextCodec::codecForLocale());
    QString content = stream.readAll();
    //这里对内容进行处理后再写入,希望覆盖之前的内容
  stream << content;
    
    结果却是追加内容到原来文件,QFile::Append 这个选项设置才是追加模式 默认怎么不是覆盖呢?
离线dwhome

只看该作者 1楼 发表于: 2011-04-28
你修改content ,在把content 追加到stream :stream << content;
程序完全按照你的指示办事

应该先清空stream后,再stream << content;
[ 此帖被dwhome在2011-04-28 16:55重新编辑 ]
离线thinkbad

只看该作者 2楼 发表于: 2011-04-28
没找到清空的方法。
离线liuchuanwen
只看该作者 3楼 发表于: 2011-04-28
QDataStream::device()->seek(0).你试试
离线dbzhang800

只看该作者 4楼 发表于: 2011-04-28
引用楼主thinkbad于2011-04-28 16:29发表的 关于文件读写如何覆盖写入的问题 :
    QFile file(fileInfo.filePath());    
    if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
        return;
    QTextStream stream(&file);
.......

前几天刚回答过这个问题,只不过他是QDataStream你是QTextStream。其实就是常规文件操作问题。

打开文件,你读啊读,读到文件结束处,然后,写啊写,不就是你看到的效果么?

操作文件时,无论是C的FILE、C++的fstream、Qt的QFile,都是一样的。主要是要清楚[align=auto]有个 current position 的概念,然后你就应该知道怎么做了。
快速回复
限100 字节
 
上一个 下一个