• 12205阅读
  • 10回复

[提问]qt 怎样读取一个比较大的文本文件? [复制链接]

上一主题 下一主题
离线zzxap
 

只看楼主 倒序阅读 楼主  发表于: 2011-04-01
不要说 readall();






离线dbzhang800

只看该作者 1楼 发表于: 2011-04-01
引用楼主zzxap于2011-04-01 15:46发表的 qt 怎样读取一个比较大的文本文件? :
不要说 readall();
.......

先看看manual行不?QFile中和read有关的也就那几个函数。
离线kummar
只看该作者 2楼 发表于: 2011-04-01
QFile file(your file name);
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
QByteArray data;
data.resize(size); //size是每次你想读取的字节数
while(!in.atEnd())
{
     in.readRawData(data.data(),size);
     处理当前读取的数据data
}
离线linxy

只看该作者 3楼 发表于: 2011-04-02
可以试一下用文件映射 QFile::map();记得调用这个函数后要调用QFile::unmap();
具体用法参考一下手册
离线dbzhang800

只看该作者 4楼 发表于: 2011-04-02
引用第3楼linxy于2011-04-02 09:22发表的  :
可以试一下用文件映射 QFile::map();记得调用这个函数后要调用QFile::unmap();
具体用法参考一下手册


恩,对于大文件,这个是对的。但楼主这儿readAll都拉出来,所以他要想要的最可能就是 read 、readLine 等函数。

其实答案是什么不重要,提问的态度的方式更重要一些。

离线linxy

只看该作者 5楼 发表于: 2011-04-02
引用第4楼dbzhang800于2011-04-02 09:38发表的  :
恩,对于大文件,这个是对的。但楼主这儿readAll都拉出来,所以他要想要的最可能就是 read 、readLine 等函数。
其实答案是什么不重要,提问的态度的方式更重要一些。
.......


是的~~~
离线叶子553952
只看该作者 6楼 发表于: 2012-03-27
回 3楼(linxy) 的帖子
您好 我想再问一下 用文件映射的话 也要用到windows下内存管理的几个函数如creatfile()等,那样开发的编辑器还是跨平台的吗??
离线transformer

只看该作者 7楼 发表于: 2012-03-27
别的系统我不知道,反正linux也是有内存映射的。
离线roywillow

只看该作者 8楼 发表于: 2012-03-27
如果想从某个位置开始读取的话就考虑一下seek()呗

另外map()究竟是做什么用的,一直没搞清楚,能顺便讲讲吗?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线zhaopubo
只看该作者 9楼 发表于: 2012-03-28
回 2楼(kummar) 的帖子
QTextSteam更适合吧!
离线叶子553952
只看该作者 10楼 发表于: 2012-04-02
回 9楼(zhaopubo) 的帖子
我试过,但是好像还是读取不了大文本文件,老是响应时间太长最后干脆读不了了
快速回复
限100 字节
 
上一个 下一个