• 8693阅读
  • 8回复

QTextStream写出文档,原来是不完全覆盖 [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2009-09-18
例如,如果文档output.txt原来的内容是123456789

然后利用QTextStream把789写到output.txt,

那么,最后output.txt的内容会是789456789

也就是说利用QTextStream来作写出时,只是从文件的开头开始,写入789,至于789长度之后的那些内容是不会被覆盖的
离线iiiyyyhhhsss

只看该作者 1楼 发表于: 2009-09-18
怎么没人回应呢?难道这个是对的?

但是我每次把文档读进来,修改后再保存出去,都是这种情况。。
[ 此帖被iiiyyyhhhsss在2009-09-18 10:44重新编辑 ]
离线iiiyyyhhhsss

只看该作者 2楼 发表于: 2009-09-18
如果是对的,那么要用什么方式,才能使789完全覆盖掉123456789,就是说对原来的文档的内容作完全的更新?
离线qinpanke

只看该作者 3楼 发表于: 2009-09-18
         这个跟你文件打开的方式有关  bool QFile::open ( FILE * fh, OpenMode mode ) 。 你将OpenMode设为 QIODevice::WriteOnly 或QIODevice::ReadWrite时就会清空原文件所有内容,从文件头开始写(前提是你没有使用fseek偏移文件指针),如果OpenMode为QIODevice::Append时就是追加,在文件内容的最后添加新内容。
     打开文件,将QTextStream映射到文件前,就应该设置文件操作的模式...... 是追加文件内容,还是清空从头写跟QTextStream没有关系,跟你操作文件的方式有关。
QQ      308367961
email  qinpanke@sina.com
Blog    http://hi.baidu.com/qinpanke/blog/category/Qt
欢迎大家访问我的博客  共同学习提高
离线qinpanke

只看该作者 4楼 发表于: 2009-09-18
         这个跟你文件打开的方式有关  bool QFile::open ( FILE * fh, OpenMode mode ) 。 你将OpenMode设为 QIODevice::WriteOnly 或QIODevice::ReadWrite时就会清空原文件所有内容,从文件头开始写(前提是你没有使用fseek偏移文件指针),如果OpenMode为QIODevice::Append时就是追加,在文件内容的最后添加新内容。
     打开文件,将QTextStream映射到文件前,就应该设置文件操作的模式...... 是追加文件内容,还是清空从头写跟QTextStream没有关系,跟你操作文件的方式有关。
QQ      308367961
email  qinpanke@sina.com
Blog    http://hi.baidu.com/qinpanke/blog/category/Qt
欢迎大家访问我的博客  共同学习提高
离线iiiyyyhhhsss

只看该作者 5楼 发表于: 2009-09-18
if (outFile.open(QIODevice::ReadWrite|QIODevice::Text))
    {QTextStream outStream(&outFile);        
    outStream.setCodec("UTF-8");  
    outStream<<textEdit->toPlainText();  
    outFile.close();  
    }

我的代码是这样的啊
离线iiiyyyhhhsss

只看该作者 6楼 发表于: 2009-09-18
我又重新试了一下,原来只能用WriteOnly模式,文档就会先被清除

如果用ReadWrite模式,就会出现我上面的那种情况,文档不会先被清除
离线robertkun

只看该作者 7楼 发表于: 2009-09-18
噢 ,原来如此~
                                              简单的生活使人快乐!
离线wsszlj

只看该作者 8楼 发表于: 2009-09-18
基础
快速回复
限100 字节
 
上一个 下一个