Java BufferedReader运行极慢

Java BufferedReader运行极慢,java,php,android,download,bufferedreader,Java,Php,Android,Download,Bufferedreader,我正在从web服务器下载图像,如下所示: 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.readL

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

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字符。保持线路中断并不重要


谢谢

我想这里最薄弱的环节是网络/服务器,但无论如何,您可以在循环的同时提高
的性能

每次调用时,使用
+=
基本上会创建一个新的
StringBuilder
。因此
string1+=string2
与调用
string1=newstringbuilder(string1.append(string2.toString())是一样的StringBuilder
,并在完成循环后调用
toString()

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

如果循环不经常运行,性能改进可能不会太大,但是由于您正在下载一个映像,我想它会运行很多次

我的第一个猜测是这里最薄弱的环节是网络/服务器,而不是BufferedReader。。。我试着通过chrome下载这个文件,大约需要10秒钟。同样感谢StringBuilder提示,我不知道每次连接时都会安装一个新的@我很乐意帮忙。此外,还有一个小的“良好实践”事项:如果您还没有在问题中删去这一行,您应该在循环后关闭
InputStream