Java处理大文件的问题

loveyousomuch 2008-04-10 05:11:35
环境:Solaris 10

问题:目录下有一个7G大小的日志文件,里面是文本格式的数据,一条条的

现在想用一个Java来读取并处理它,

由于文件太大,又要保证性能,请在经验的朋友进来看看
...全文
1115 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
mark
chjl2020 2008-04-25
  • 打赏
  • 举报
回复
像这么大的文件如果一直用链表似的从头往后读,效率真的很慢,
能用多线程把文件分段来读吗?即每个线程读一小片段,
如果能的话,请给个思路吧,谢谢
yifuzhiming 2008-04-25
  • 打赏
  • 举报
回复
跟客户解释一下,这样不好管理,文件太大,客户会理解的
joejoe1991 2008-04-25
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 loveyousomuch 的回复:]
呵呵

已经解决了

思路:监控日志文件的变化,把每次读的位置记下来

然后每次定位到新更新的地方,把增加的内容读出来即可

用普通的IO包即可完成,无需NIO包.
[/Quote]
在文件里移动读取位置 不会耗时间吗?
我怎么感觉会耗掉很多时间。。。
loveyousomuch 2008-04-25
  • 打赏
  • 举报
回复
呵呵

已经解决了

思路:监控日志文件的变化,把每次读的位置记下来

然后每次定位到新更新的地方,把增加的内容读出来即可

用普通的IO包即可完成,无需NIO包.
商科程序员 2008-04-24
  • 打赏
  • 举报
回复
读一点儿处理一点儿呗.
你还想一下把速个文件都读出来,放在内存里备用呀.
chensjmail 2008-04-24
  • 打赏
  • 举报
回复
java nio 对这些做得很不错了,性能我想用缓存就OK了,
缓的大小可以跟据活动空间调整,
这样可能相对可以提高一点点
l_wenb 2008-04-24
  • 打赏
  • 举报
回复
支持竹子的.
loveyousomuch 2008-04-24
  • 打赏
  • 举报
回复
好久没来了,

此问题已经用Java程序解决了

日志达到7G时,Java程序仍能很好的进行处理,并且把新增加的内容过滤出来

而且效率也比较高,

每秒可以处理3000多条,完全达到性能要求,

感谢大家关注!!
sunnauq 2008-04-20
  • 打赏
  • 举报
回复
关注,学习
薛定谔之死猫 2008-04-19
  • 打赏
  • 举报
回复
gawk,后台服务日志一直用它开汇总
kelph 2008-04-19
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 loveyousomuch 的回复:]
引用 22 楼 java2000_net 的回复:
你的日志设置有问题,你不能所有的日志都写到一个文件,可以参考 log4j的做法
1 每天写一个
2 每月写一个
3 每1G 写一个


就连Oracle 都要使用 partition 技术来分割数据库文件,我们为何不自己也分割呢?


我们当然不愿意处理这么大的文件,但这是客户的需求,没办法,他们就要这样做。

Java监控文件的增长不好解决
[/Quote]
需要合理的平衡客户需求和技术实现,并能将最佳的方案有效的反馈给客户。
毕竟高效并且有质量的软件才是开发者和客户的共同目标。
yqsshr 2008-04-19
  • 打赏
  • 举报
回复
路过,学习!
我是风 2008-04-19
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 caoyinghui1986 的回复:]
支持一下.顺便学习............
[/Quote]
qianxf2008 2008-04-19
  • 打赏
  • 举报
回复
以前遇到过这样的问题
用java读取一定格式的数据文件,更新到数据库中。

学习中.......
richard_2010 2008-04-19
  • 打赏
  • 举报
回复
为什么不用别的语言呢。。。
aking21alinjuju 2008-04-19
  • 打赏
  • 举报
回复
学习
justicesun 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 loveyousomuch 的回复:]

现在的问题是,Java如何来监控一个文件的增长,当文件被写入新的数据时,如何让程序把新加入的数据取出并做相应的处理?

不知道有谁有过此方面的经验
[/Quote]

没经验..
一般写文件的时候都会把文件锁定...没研究过Solaris源码,不好评论
你可以看看Solaris内核,肯定能有更有效的方法解决
hmsuccess 2008-04-17
  • 打赏
  • 举报
回复
4G大小的文件,用了907秒,性能还是不错的, ??
steven_srl 2008-04-17
  • 打赏
  • 举报
回复
22楼问的好,我也奇怪7G的文件啊,我是菜鸟,不过这种东西就算纯粹的拷贝也不是很快的事情,何况还要做分析

原来的日志管理就有问题,处理这种东西好头大^_^
加载更多回复(25)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧