Java:将大文本读入内存

时间:2016-07-12 10:54:41

标签: java memory text load large-files

我必须将两个单独的txt文件读入内存。我将从一个txt文件中读取每一行,并将多次从另一个txt文件中的一个txt文件中查找一些内容。

我试图将txt文件读入两个单独的ArrayLists,但是当我在加载后尝试检查大小时,它就是threwjava.lang.OutOfMemoryError:Java堆空间异常。

这是我的代码块:

BufferedReader mtc_txt = new BufferedReader(new FileReader(mtc_path));
BufferedReader mfc_txt = new BufferedReader(new FileReader(mfc_path));

String line;

ArrayList<String> mtc_txt_list = new ArrayList<String>();
ArrayList<String> mfc_txt_list = new ArrayList<String>();

System.out.println("Loading..");
while ((line = mtc_txt.readLine()) != null) {

mtc_txt_list.add(line);

}
while ((line = mfc_txt.readLine()) != null) {
mfc_txt_list.add(line);
}
System.out.println("Loaded..");
System.out.println("MTC num of lines: "+mtc_txt_list.size());
System.out.println("MFC num of lines: "+mfc_txt_list.size());

这是输出:

Loading..
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at Main.replaceSelected(Main.java:39)
at Main.main(Main.java:108)

一个txt文件包含大约90000行,另一个包含524000行。

我想把它们留在记忆中。在Java中执行此操作的最佳方法是什么?

感谢。

0 个答案:

没有答案