您的代码中的问题在于,它正在创建许多重的String对象,复制它们的内容并对其执行操作。相反,应该使用StringBuilder以避免String在每个追加上创建新对象,并避免复制char数组。您的案例的实现将如下所示:
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder total = new StringBuilder();
for (String line; (line = r.readLine()) != null; ) {
total.append(line).append('\n');
}
现在,您total无需将其转换为即可使用String,但是如果您需要将结果作为String,只需添加:
字符串结果= total.toString();
我会尽力解释一下...
a += b(或a = a + b),其中a和b都是字符串,副本的内容都 a 和 b一个新的对象(注意,你还复制a,它包含累积 String),和你正在做的每一次迭代的拷贝。
a.append(b),其中a是StringBuilder,直接将b内容附加到a,因此您不必在每次迭代时都复制累积的字符串。