java为什么运行这么长时间?
我是一个java新手,我正在阅读一个~25MB的文件,只需加载一个文件就可以了。。。有没有其他方法可以加快速度?是扫描仪不能处理大文件吗
String text = "";
Scanner sc = new Scanner(new File("text.txt"));
while(sc.hasNext()) {
text += sc.next();
}
你可以在下面搜索框中键入要查询的问题!
我是一个java新手,我正在阅读一个~25MB的文件,只需加载一个文件就可以了。。。有没有其他方法可以加快速度?是扫描仪不能处理大文件吗
String text = "";
Scanner sc = new Scanner(new File("text.txt"));
while(sc.hasNext()) {
text += sc.next();
}
# 1 楼答案
试着使用
BufferedStreams
,例如,BufferedInputStream, BufferedReader
他们会加速它。有关BufferedStreams
的更多信息,请查看此处; http://docs.oracle.com/javase/tutorial/essential/io/buffers.html由于
String
在Java
中是不可变的,因此它将在while
循环的每个迭代中创建一个新的String
# 2 楼答案
它是
String +=
,每次创建一个不断增长的新字符串对象。 事实上,对于小于25 MB的内存,您可以执行以下操作(低于25 MB):readLine
产生换行符之前的行,不包括它们在Java 7中,可以执行以下操作:
编码以UTF-8的形式显式给出。“Windows-1252”将用于Windows拉丁语-1等
# 3 楼答案
每次迭代都要连接到文本,字符串在Java中是不可变的。这意味着每当
text
被“修改”时,它都会在内存中创建一个新的String
对象,从而导致大文件的加载时间过长。当你不断地改变一个String
时,你应该总是尝试使用一个StringBuilder
你可以做:
当您想要访问文本的内容时,可以调用
text.toString()