【发布时间】:2015-04-12 12:38:10
【问题描述】:
您好,我只是想知道在使用 Apache 或 BufferedReader 或 Scanner 的 LineIterator 读取超过 2gb 大小的文本文件时,是否可以限制 (JVM) 的内存大小?
假设我有 2gb 的文本文件,我只想为该文件读取 500mb。当我达到 500mb 时,我将销毁保存数据的变量(字符串),它将继续再次读取另外 500mb 的文本文件,直到达到文本文件的最大大小。所以这就像将文本文件拆分为 500mb。
LineIterator it = FileUtils.lineIterator(file,"UTF-8");
String line = null;
try {
while (it.hasNext()) {
line = it.nextLine();
}
【问题讨论】:
-
最简单的方法 - 创建一个
500mbbyte[]并填写它。 -
但是数据是字符串而不是字节
-
文件中的所有内容都是字节。如果你愿意,你可以创建一个
char[]。 -
我应该将数据线存储在 byte[] 中吗?如果 byte[] 达到 500mb,我将创建语句。
-
什么意思如果字节[]达到500mb,我会创建语句。数组具有特定的大小。
标签: java io iterator java.util.scanner bufferedreader