gyj的gravatar头像
gyj 2015-05-17 12:12:58

java如何控制文件读取是从上一次文件读取结束的地方开始继续读取的?并且本次要读取到文件结尾处。

在项目中遇到这样的问题。文件下有很多的日志文件,我扫描后存入数据库,这些日志文件过段时间就会新增内容,当日志文件新增后。我只把新增的内容存入数据库。

例如,一个日志文件的内容为ab,我第一次扫描存入数据库,这个日志文件过了一会新增内容了内容,此时为abcd,我这次扫描后只把新增的内容cd存入数据库。求大神指点。

所有回答列表(4)
Lin﹋的gravatar头像
Lin﹋  LV9 2015年5月18日

其实没必要这么麻烦,如果需要存储日志可以使用Log4j直接生成日志存入数据库,你既存文件又存数据库对性能来说消耗是很大的。

en_lan的gravatar头像
en_lan  LV4 2015年5月19日

先记录一下 上次读取的字节数,然后FileInputStream有个skip方法,跳过上次读取的字节数,

然后继续读取剩余的文件,不过没试过,不知道行不行。

cnm的gravatar头像
cnm  LV11 2015年5月22日

可以换个思路噢。

比如,日志文件名叫"rizhi.log",你读取这个日志文件存数据库,肯定是有周期的,比如每天凌晨3点读取。

(如果实时读取,还不如直接把日志存数据库)

你重命名"rizhi.log"为"rizhi-2015xxxx.log",如果有新的日志生成,程序发现没有"rizhi.log",应该会自动新建一个"rizhi.log",继续存储日志吧?

so:问题不就解决了吗?

huang_550的gravatar头像
huang_550 2015年10月28日
  1. 然而log4j生成的文件是一直被占用的,你不能狗去重命名和删除
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友