我正在编写一个可以处理50-60GB文件的java程序。该文件的一行可能是2-3GB,如果加载会破坏我的JVM。我想找到这一行的长度,所以我知道这行是否可以进入DOM解析器或SAX解析器。本文档的每一行都是一个单独的XML。我似乎有很多方法来获得长度,但它们都涉及将它们加载到内存中来计算它。请帮忙。谢谢。
答案 0 :(得分:4)
使用Reader.read()将一些字符读入固定大小的缓冲区,然后扫描缓冲区。
答案 1 :(得分:0)
您可以使用LineNumberReader:
public static long getLineCount(Reader reader)
throws IOException {
LineNumberReader lineNumberReader = new LineNumberReader(reader);
lineNumberReader.skip(Long.MAX_VALUE);
return lineNumberReader.getLineNumber();
}