需求:读取日志文件(大于2GB),文件内容超过2千万行,实现从指定行数开始往后读取若干行内容,如:从1500万行往后读500行,或从1900万行往后读600行等。
如何快速的定位指定的行数,如何高效的实现文件内容读取,各位达人请指点,谢过先。
----------------------------------------------
另:已使用BufferedReader试过,没法快速定位行数,越往后时间消耗越多,最糟糕的达到30s,这个结果没法接受。
先用按行把文件分割了,文件进行编号再读取定位行数
分割方法:http://kerry.blog.51cto.com/172631/292485
######只提供解决方案,可行与否,慎重斟酌
######回复 @MZHS : 谢谢提供思路######如果发现不是分行符号,则读取下一个字节,注意块开始和块结尾字节位置的变化######用apache下的common IO包重的LineIterator a=FileUtils.lineIterator(new File("")); 读取试试######https://github.com/ikcourage/LFS 建议用 LFS 来记录日志,或者针对目前这个案例,将日志同步到 LFS 会更简单。
######谢谢,看看先版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。