java 读取大文件

2018-04-04 Java

整理 java 操作大文件的方法。

内存中操作

Files.readLines(new File(path), Charsets.UTF_8);// guava
FileUtils.readLines(new File(path));// commons-io

需注意的是方式需要考虑内存限制,否则会出现 OutOfMemoryError

java.util.Scanner

使用 java.util.Scanner 类扫描文件的内容,一行一行连续地读取, 这种方案将会遍历文件中的所有行——允许对每一行进行处理,而不保持对它的引用

org.apache.commons.io.LineIterator

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

此方法对内存占用也很少。

java.io.RandomAccessFileNIO FileChannel

Search

    Post Directory