gpt4 book ai didi

Java读取长文本文件很慢

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:55:47 24 4
gpt4 key购买 nike

我有一个 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 行需要几秒钟。我显然做错了什么,但不明白是什么。预先感谢您的帮助。

最佳答案

@PaulGrime 是对的。每次循环读取一行时,您都在复制字符串。一旦字符串变大(比如 10,000 行大),它就会做大量的工作来进行复制。

试试这个:

StringBuilder sb = new StringBuilder();
while (...reading lines..){
....
sb.append(tempString); //should add newline
...
}

s = sb.toString();

注意:请阅读下面 Paul 的回答,了解为什么去除换行符会使这种读取文件的方式变得糟糕。此外,如问题评论中所述,XStream 提供了一种读取文件的方法,即使没有,IOUtils.toString(reader) 也是一种更安全的读取文件的方法。

关于Java读取长文本文件很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15849706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com