• 5758阅读
  • 6回复

[提问]如何使用两个QTextStream读取同一个文件 [复制链接]

上一主题 下一主题
离线houlixiao
 
只看楼主 倒序阅读 楼主  发表于: 2012-02-27
关键词: 求助文件
我要使用QTextStream逐行读取一个文本文件,因为要重新读那些读过的文件,我就定义了两个QTextStream,为什么这样还是不行呀?同事说复制一个文件,但是我不知道具体怎么用?请大家帮帮忙,谢谢了!
好好学习
离线jdwx

只看该作者 1楼 发表于: 2012-02-27
回 楼主(houlixiao) 的帖子
bool QTextStream::seek ( qint64 pos )
xxxx.seek(0);就移动到文件头。重新读文件就行了。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线lejcey

只看该作者 2楼 发表于: 2012-02-28
楼上高见,也是正解,文件流靠的是QFile 继承的 QIODevice 来支持,QTextStream 只是给了你一种操作方法,而不是底层操作,两个QTextStream操作一个同一个流,oh my god,居然没有出错。

离线houlixiao
只看该作者 3楼 发表于: 2012-02-28
回 2楼(lejcey) 的帖子
你的意思是不是不能两个QTextStream同事操作同一个文件呀?
好好学习
离线houlixiao
只看该作者 4楼 发表于: 2012-02-28
回 1楼(jdwx) 的帖子
我想问一下如果使用同一个流的话,怎么记录当前的位置呢?因为它读完上边那一段后还要回到原来的位置!谢谢
好好学习
离线roywillow

只看该作者 5楼 发表于: 2012-02-28
对于磁盘上的同一个文件,显然只可以被一个QFile open,否则那不就乱套了?
而这个文件目前读取到了什么位置,其实最后还是被记录在了QFile中
所以即使是多个QTextStream操作一个QFile,当前的位置永远只能有一个
参考一下QFile::seek()和QFile::pos()吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 6楼 发表于: 2012-02-28
引用第5楼roywillow于2012-02-28 17:29发表的  :
对于磁盘上的同一个文件,显然只可以被一个QFile open,否则那不就乱套了?
而这个文件目前读取到了什么位置,其实最后还是被记录在了QFile中
所以即使是多个QTextStream操作一个QFile,当前的位置永远只能有一个
参考一下QFile::seek()和吧

+1
QFile::pos()就是当前位置。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个