码迷,mamicode.com
首页 > Web开发 > 详细

使用Apache Commons IO组件读取大文件

时间:2017-10-17 15:40:52      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:padding   ror   ext   color   logs   comm   log   final   异常   

Apache Commons IO读取文件代码如下:

Files.readLines(new File(path), Charsets.UTF_8);
FileUtils.readLines(new File(path));

以上代码在读取普通文本文件时没有任何问题,但是在读取大文件时会抛出“OutOfMemoryError”异常。

因为:文件的所有行都被存放在内存中,当文件足够大时内存吃紧,导致程序抛出异常。

 

解决思路:

通常不需要把文件的所有行一次性地放入内存中,相反,我们只需要遍历文件的每一行,然后做相应的处理,处理完之后把它扔掉。所以,这正是我们将要做的——通过行迭代,而不是把所有行都放在内存中。

LineIterator it = FileUtils.lineIterator(theFile, "UTF-8");
try {
    while (it.hasNext()) {
        String line = it.nextLine();
        // do something with line
    }
} finally {
    LineIterator.closeQuietly(it);
}

使用Apache Commons IO组件读取大文件

标签:padding   ror   ext   color   logs   comm   log   final   异常   

原文地址:http://www.cnblogs.com/xusweeter/p/7681008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!