我有一个关于在java中处理大文件的问题。
我在Mac Pro上使用Eclipse neon。我想用Java读取.txt文件,文件大小是MB或GM。
我在google上搜索,我已经在stackoverflow中阅读了所有问题,并尝试了阅读文件的方法。
我试过了
FileReader and BufferedReader , also I tried FileInputStream
当我读取等于或小于100 KB的文件时,eclipse就可以了,它会读取所有文件。
但如果文件在MG或超过100 KB,eclipse挂起,我必须重新启动它。
我不知道问题是什么,是在我的设备中还是什么?
我真的很困惑,因为我试过的所有方法都说它可以在一秒钟内读取1MG文件。对我而言,它并不是。
是否有任何API或任何我可以使用它,以保证读取整个文件。
请问,任何人都有同样的问题,请给我一个建议。
这是代码:
FileReader fileReader1 = new FileReader("/Users/Desktop/i/36.txt");
BufferedReader br = new BufferedReader(fileReader1);
String line ;
while ((line = br.readLine()) != null) {
token+=line+" ";
}
System.out.println(token);
我也尝试过这个:
List<String> lines = Files.readAllLines(Paths.get(fileName),
StandardCharsets.UTF_8);
for (String line : lines) {
System.out.println(line);
}
答案 0 :(得分:0)
第一个是将整个文件写入单个变量(从不在循环中使用字符串连接;使用StringBuilder
)并且可能在GC负载下粉碎机器。
第二个应工作,但可能需要一段时间才能使用更大的文件;我很惊讶那里不是它的流版本。在调试器中运行,找出是否有一条永远占用的线路。