【发布时间】:2013-03-28 19:11:48
【问题描述】:
我有一个 63000 行 (3.5 MB) 长的文本文件(使用 XStream 创建的 XML)。我正在尝试使用缓冲阅读器阅读它:
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();
在这里你可以看到我测量阅读速度的尝试。而且非常低。在 10000 行之后读取 1000 行需要几秒钟。我显然做错了什么,但不明白是什么。提前感谢您的帮助。
【问题讨论】:
-
你打算解析这个文件吗?为什么不直接用 Xerces/SAX/其他解析工具来加载呢?
-
String
+和concat如果字符串很大,则效率非常低。使用StringBuilder或将InputStream/Reader直接传递给xml 解析器。 -
或者如果你真的需要线条,使用类似这样的东西 - commons.apache.org/proper/commons-io/javadocs/api-2.4/org/…。
-
是的,我正在尝试解析这个文件并再次将其输入 Xstream 以读取保存的类。行并不重要。
-
如果在XStream中需要的话,不如直接把reader传给XStream,而不是自己读完再传字符串。
标签: java file-io bufferedreader file-read