• 19698阅读
  • 10回复

[讨论]如何用Qt实现对txt文档的特定一行进行删除或者是覆盖 [复制链接]

上一主题 下一主题
离线xiumingjun
 

只看楼主 倒序阅读 楼主  发表于: 2011-10-22
关键词: QT4求助问题
     用Qt打开txt文档时,可以使用QFile的readLine()按行来读取txt中的内容。但是,我现在想按照某一特定的行来删除或者是重写txt,也就是这是删除一行或把这一行重写。这应该如何实现??
      求解决方案,最好是有代码共分析~~~~


      
离线dbzhang800

只看该作者 1楼 发表于: 2011-10-22
老老实实按照你知道的方法就行了。
离线xiumingjun

只看该作者 2楼 发表于: 2011-10-22
回 1楼(dbzhang800) 的帖子

      什么意思?我只知道怎么样去一行一行的读取,但是不知道如何将特定行的内容进行删除或者是重写啊?
离线roywillow

只看该作者 3楼 发表于: 2011-10-22
老老实实重新一行行写入吧
用seek找到那一行的offset然后覆盖也不是不可以,只是如果新内容比原来长或者短会不好办吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 4楼 发表于: 2011-10-22
回 2楼(xiumingjun) 的帖子
dbzhang800是说:就是读一行,不需要修改就写到临时文件,接着读,读到需要修改那行,修改,
把修改过的那行写入,再读一行写一行,到文件尾。删除源文件,将临时文件改名为源文件名。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线xiumingjun

只看该作者 5楼 发表于: 2011-10-24
回 3楼(roywillow) 的帖子
seek是用来定位字节的吧,我现在就是不考虑字节数,只是行来修改的。
离线xiumingjun

只看该作者 6楼 发表于: 2011-10-24
回 4楼(jdwx) 的帖子
哦,这样啊。意思是明白了,我试试看怎么样实现把。
离线csyay5
只看该作者 7楼 发表于: 2012-05-02
怎么读阿 能把代码写出来吗
离线yaoweimin168

只看该作者 8楼 发表于: 2012-09-07
离线weinkym

只看该作者 9楼 发表于: 2012-09-11
上次我也遇到这个问题 最后还是创建一个临时文件比较好解决,或者readAll放在内存里处理 建议用4楼的方法
离线jerryjjian
只看该作者 10楼 发表于: 2012-09-11
文件是顺序存储的,如果你修改的一行比之前存在的一行内容还多,那么你写入文件的时候就会覆盖下一行的内容。
所以,要么读入内存修改后重新写文件,小文件效率不错例如QSetting就是这么做的,如果是大文件这种效率很低。
所以如果你想用来存储大数据的话建议使用SQLite,或者使用链表自己做一个文件数据库。
快速回复
限100 字节
 
上一个 下一个