我正在玩Scanner类用于学习目的,我用它来读取一个非常大的文件(60.000行aprox)而不使用Reader类,它在大约400行后停止读取。我是否必须在Scanner的构造函数中使用Bufferedreader,否则问题还是别的?我想知道为什么会这样。谢谢。 我的代码是输出所有行的常用代码。
File file1 = new File("file1");
Scanner in= new Scanner(file1);
while (scan.hasNextLine() ) {
String str = scan.nextLine();
System.out.println(str);
}
答案 0 :(得分:4)
此问题通常在64位计算机或大小超过1-2 GB的文件上更常见,并且与堆空间无关。切换到BufferedReader它应该可以正常工作,
BufferedReader br = new BufferedReader(new FileReader(filepath));
String line = "";
while((line=br.readLine())!=null)
{
// do something
}
答案 1 :(得分:2)
我刚刚遇到了这个问题。它似乎只是通过改变扫描仪结构。替换这个:
File file1 = new File("file1");
Scanner in= new Scanner(file1);
用这个:
FileReader file1 = new FileReader("file1");
Scanner in= new Scanner(file1);
在没有系统知道它是文本文件的情况下从文件构建扫描程序时,可能会出现问题。