BufferedReader 运行 极慢

BufferedReader running extremely slow

我正在从我的网络服务器下载图像,如下所示:

conn = url.openConnection();
conn.setDoOutput(true);
wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();

rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((resp = rd.readLine()) != null) {
    downloadedImage += resp;
}

但是它非常慢。下载一个 500kb 的文件大约需要 15 秒。有没有更好的下载图片的方法?

以防万一:文件格式为 x 行,每行 80 个 UTF-8 字符。保留换行符并不重要。

谢谢

我想最弱的 link 是网络/服务器,但无论如何,您可以稍微提高 while 循环的性能。

使用 += 基本上会在每次调用它时创建一个新的 StringBuilder 。所以 string1 += string2 与调用 string1 = new StringBuilder(string1).append(string2).toString(); 是一回事 显然,您永远不会在 运行ns x 次的循环中执行此操作。因此,在开始循环之前创建 one StringBuilder,并在完成后调用 toString()

StringBuilder stringBuilder = new StringBuilder(downloadedImage);
while ((resp = rd.readLine()) != null) {
    stringBuilder.append(resp);
}
downloadedImage = stringBuilder.toString();

如果循环不 运行 频繁,性能改进可能不会那么大,但由于您正在下载图像,我想它 运行 很多次。