在java中不能读取大于1kb的内容

时间:2017-04-01 00:03:48

标签: java eclipse text-files large-files bigdata

我有一个关于在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);
            }

1 个答案:

答案 0 :(得分:0)

第一个是将整个文件写入单个变量(从不在循环中使用字符串连接;使用StringBuilder)并且可能在GC负载下粉碎机器。

第二个工作,但可能需要一段时间才能使用更大的文件;我很惊讶那里不是它的流版本。在调试器中运行,找出是否有一条永远占用的线路。