loz*_*zga 10 java file-io file-read bufferedreader
我有一个文本文件(使用XStream创建的XML),长度为63000行(3.5 MB).我正在尝试使用Buffered reader阅读它:
BufferedReader br = new BufferedReader(new FileReader(file));
try {
String s = "";
String tempString;
int i = 0;
while ((tempString = br.readLine()) != null) {
s = s.concat(tempString);
// s=s+tempString;
i = i + 1;
if (i % 1000 == 0) {
System.out.println(Integer.toString(i));
}
}
br.close();
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到我尝试测量阅读速度.它非常低.在10000行之后读取1000行需要几秒钟.我显然做错了什么,但无法理解什么.在此先感谢您的帮助.
@PaulGrime 是对的。每次循环读取一行时,您都会复制该字符串。一旦字符串变大(比如 10,000 行),它就会做大量的工作来进行复制。
尝试这个:
StringBuilder sb = new StringBuilder();
while (...reading lines..){
....
sb.append(tempString); //should add newline
...
}
s = sb.toString();
Run Code Online (Sandbox Code Playgroud)
注意:阅读下面 Paul 的回答,了解为什么剥离换行符会成为读取文件的糟糕方法。另外,正如问题评论中提到的,XStream 提供了一种读取文件的方法,即使没有,IOUtils.toString(reader) 将是一种更安全的读取文件的方法。
| 归档时间: |
|
| 查看次数: |
4279 次 |
| 最近记录: |