为什么这需要这么长时间才能运行?

use*_*552 3 java io

我是java的新手,我正在阅读一个~25 MB的文件,并且需要永远加载......有没有其他选择让这更快?是扫描仪无法处理大文件吗?

String text = "";
Scanner sc = new Scanner(new File("text.txt"));
while(sc.hasNext()) {
text += sc.next();
}
Run Code Online (Sandbox Code Playgroud)

Son*_*Gao 8

您在每次迭代时都连接到文本,并且字符串在Java中是不可变的.这意味着String每次text"修改" 时它都会在内存中创建一个新对象,从而导致大文件的加载时间过长.当你不断改变a时,你应该总是尝试使用StringBuildera String.

你可以这样做:

StringBuilder text = new StringBuilder();
Scanner sc = new Scanner(new File("text.txt");
while(sc.hasNext()) {
  text.append(sc.next());
}
Run Code Online (Sandbox Code Playgroud)

如果要访问文本内容,可以调用text.toString().