zoukankan      html  css  js  c++  java
  • 使用Apache Commons IO组件读取大文件

    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);
    }
  • 相关阅读:
    Java 异常基础详解
    Try-with-resources
    Java集合详解
    Java面向对象之多态
    Java面向对象之继承
    Java面向对象之封装
    Java 接口
    Java抽象类
    Java类和对象
    Java 数组结构
  • 原文地址:https://www.cnblogs.com/xusweeter/p/7681008.html
Copyright © 2011-2022 走看看