【发布时间】:2011-02-17 02:26:05
【问题描述】:
在读取 HttpURLConnection 的 InputStream 时,是否有任何理由使用以下其中一个而不是另一个?我已经在示例中看到了这两种用法。
手动缓冲:
while ((length = inputStream.read(buffer)) > 0) {
os.write(buf, 0, ret);
}
BufferedInputStream
is = http.getInputStream();
bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append(current);
}
编辑总的来说,我对 HTTP 还很陌生,但我想到的一个考虑是,如果我使用的是持久 HTTP 连接,我不能在输入流为空之前读取正确的?在这种情况下,我不需要读取消息长度并只读取该长度的输入流吗?
同样,如果不使用持久连接,我包含的代码在正确读取流方面是否 100% 好?
【问题讨论】:
-
什么是
ByteArrayBuffer?但是当你可以处理字节数组时,没有任何理由处理单个字节。
标签: buffer inputstream httpurlconnection bufferedinputstream