Java读取超大文本文件

近日由于相关业务,需要读取一个将近1G的文件,然后将符合条件的数据insert进数据库。而执行完程序之后,最后写入数据库的数据是将近100w条,在linux系统下运行时间将近3个小时,操作量还是上了一个相当的规模。

由于之前没有进行过超大文件的读写,一开始以为需要使用分布式系统等复杂的操作才能进行。后来google了一下,发现jdk本身就支持超大文件的读写,真是虚惊一场。
网上的文章基本分为两大类,一类是使用BufferedReader类读写超大文件;另一类是使用RandomAccessFile类读取,经过比较,最后使用了前一种方式进行超大文件的读取,下面是相关代码,其实很简单


[c-sharp]
File file = new File(filepath);    
BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));     
BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024);// 用5M的缓冲读取文本文件   
         
String line = ""; 
while((line = reader.readLine()) != null){ 
//TODO: write your business 

注意代码,在实例化BufferedReader时,增加一个分配缓存的参数即可

posted @ 2012-06-21 18:31  业精于勤而荒于嬉  阅读(485)  评论(0编辑  收藏  举报