社区
C++ 语言
帖子详情
现在有一个6G大小的纯文本文件,有什么好办法读取后面的指定行的内容?
山的那边还是山~
2009-05-22 11:09:34
如题所示。
我试图读取文件总行数,即使是这样的话,都会卡在那里不动。
...全文
269
21
打赏
收藏
现在有一个6G大小的纯文本文件,有什么好办法读取后面的指定行的内容?
如题所示。 我试图读取文件总行数,即使是这样的话,都会卡在那里不动。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
山的那边还是山~
2009-06-01
打赏
举报
回复
谢谢各位!在网上找到了软件,把它给分开了.每个分30来M.
jackyjkchen
2009-05-22
打赏
举报
回复
有没有用64位偏移量?6G的数据得64为才能搞定
老邓
2009-05-22
打赏
举报
回复
如果这么大的数据,还没有索引的话,那就只能遍历了
lin12345
2009-05-22
打赏
举报
回复
好夸张的大小...
也只能遍历了吧
猫已经找不回了
2009-05-22
打赏
举报
回复
并且每行数据格式不固定。
前面打错字了。
猫已经找不回了
2009-05-22
打赏
举报
回复
如果文件没有预先处理,并且没有每行数据格式不固定。
那就只能遍历文件内容,偏移文件指针来实现。
山的那边还是山~
2009-05-22
打赏
举报
回复
[Quote=引用 3 楼 ltc_mouse 的回复:]
试试后台线程读取分析?读取总函数,其实需要把整个文件按行遍历了一次吧?
如果可能,考虑加个索引文件,记录每一行在文件中的偏移,对以后的读取会快一些的吧~
[/Quote]
正如你所说,其实就是按行把文件遍历了一遍。
hjjdebug
2009-05-22
打赏
举报
回复
索引文件告诉你应该seek到什么地方,在合适的地方建立索引就可以了吧!?
hofstede
2009-05-22
打赏
举报
回复
有难度,学习
ltc_mouse
2009-05-22
打赏
举报
回复
试试后台线程读取分析?读取总函数,其实需要把整个文件按行遍历了一次吧?
如果可能,考虑加个索引文件,记录每一行在文件中的偏移,对以后的读取会快一些的吧~
datacode
2009-05-22
打赏
举报
回复
lseek64
redleaves
2009-05-22
打赏
举报
回复
数据量到这种程度,一般都会设计更方便的结构,至少是要加个索引...
非要从原始的文本里得到行数,那你就只能等待...
Sou2012
2009-05-22
打赏
举报
回复
[Quote=引用 18 楼 lyghe 的回复:]
对于一个执著的不愿建立索引的文件,可以换一个思路:估算位置。
假设前提:
1. 一个若干G的文件,在大多数应用情况下,对行的定位并不是一定要非常精确。
2. 一般来说,文件的每行长度的差别不会太离谱。
在这2个前提下,就可以随机抽取文件中的某些部分,统计其中的换行符的数量,从而估算出每行的平均长度,然后就可以定位到某一行的估算的位置。
具体的算法就不说了,地球人都知道。
据我观察,UltraE…
[/Quote]
UP
lyghe
2009-05-22
打赏
举报
回复
PS:随着对文件内容的不断访问使用,获得信息越来越多,就可以逐渐用逼近的方法对估算出来的位置进行修正。
lyghe
2009-05-22
打赏
举报
回复
对于一个执著的不愿建立索引的文件,可以换一个思路:
估算位置
。
假设前提:
1. 一个若干G的文件,在大多数应用情况下,对行的定位并不是一定要非常精确。
2. 一般来说,文件的每行长度的差别不会太离谱。
在这2个前提下,就可以随机抽取文件中的某些部分,统计其中的换行符的数量,从而估算出每行的平均长度,然后就可以定位到某一行的估算的位置。
具体的算法就不说了,地球人都知道。
据我观察,
UltraEdit
就是这样干的。
AbnormalSubmarine
2009-05-22
打赏
举报
回复
如果这个文件,每次的数据都要变化的话
那么只能遍历
如果数据固定的话,就在第一遍历的时候建立文件索引,方便以后的访问。
希望看到好的方法
SoRoMan
2009-05-22
打赏
举报
回复
或者试试内存映射,减少文件I/O时间
SoRoMan
2009-05-22
打赏
举报
回复
试试分小块读取,减少内存消耗。
junsofter
2009-05-22
打赏
举报
回复
遍历读取,每遍历一行记录一个偏移,这个偏移一定要用64位整型(long long)。
appleshao
2009-05-22
打赏
举报
回复
搜索6GB 应该不卡吧,搜索过32KB,2GB内存地址空间的飘过.
加载更多回复(1)
python-文件操作
本课程主要讲解python中针对文件的操作,主要
内容
如下:1. 文件作用2. 文件访问模式3. 文件打开4. 文件关闭5. 文件
读取
6. 文件写入7. 文件备份8. 批量修改文件
java
读取
日志文件_Java实时
读取
日志文件
RandomAccessFile类中seek方法可以从
指定
位置
读取
文件,可以用来实现文件实时
读取
。一、实现步骤:1.首先,要有服务器上日志文件的路径。String url="/logpath/logFile.log";2.根据路径生成文件对象。File file = new File(url);3.判断文件对象的合理性:file.isFile()==true,file.exists()==true...
C语言---文件操作及文件操作函数详解
文章目录一、为什么使用文件?二、什么是文件?三、文件的打开和关闭3.1 文件指针3.2 文件的打开和关闭 本章重点 为什么使用文件 什么是文件 文件的打开和关闭 文件的顺序读写 文件的随机读写
文本文件
和二进制文件 文件
读取
结束的判定 文件缓冲区 一、为什么使用文件? 从本专栏第一篇博客起到
现在
,我们写过的所有的程序,包括扫雷、三子棋、通讯录,它们的运
行
都是一次性的。当运
行
程序时,我们所写入和输出的
内容
都是存储于计算机内存中的,当程序运
行
结束就会消失。当重启程序,我们还得重新开始操作,这无疑是不合理的
python 办公常用一:从
文本文件
中提取手机号码
https://blog.csdn.net/A757291228/article/details/117464313 python 办公常用 一、文件操作 1、
读取
文件 写一个函数名为 get_str,传入参数为需要
读取
到的文件路径,该函数返回
读取
到的
内容
,函数代码如下: # 函数名 get_str,传入参数为需要
读取
到的文件路径,该函数返回
读取
到的
内容
。 def get_str(path): with open(path, encoding="utf-8") as f: data
Matlab的各种数据
读取
、文件读写等操作汇总
MATLAB提供了多种方式从磁盘读入文件或将数据输入到工作空间,即
读取
数据,又叫导入数据;将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据。至于选择哪种机制,则根据下面两个因素决定: ● 用户所执
行
的操作是导入数据还是导出数据; ● 数据的格式为文本格式、二进制格式还是如HDF之类的标准格式。 将数据导入MATLAB中最容易的方法就是使用导入数据模板(Impor
C++ 语言
64,683
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章