我对HttpUrlConnection.setChunkedStreamingMode
没有很好的理解,这种模式有什么影响?
我有以下示例代码:
HttpURLConnection conn = getHttpURLConnection(_url);
conn.setChunkedStreamingMode(4096); //4k
conn.setConnectTimeout(3000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStream out = conn.getOutputStream();
byte[] buffer = new byte[1024 * 10];//10k
FileInputStream in= new FileInputStream(file); //Write the content of the file to the server
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.flush();
in.close();
说,文件大小为101k,我将块大小设置为4096。
每次写入HttpUrlConnection都会向服务器发送4096个字节?最后一次是1k?
请注意,我使用了10k缓冲区来写入输出流,块大小和缓冲区大小不一样重要吗?
如果我在代码中禁用了ChunkedStreamMode,那么与我设置的代码4096相比,效果是什么?
答案 0 :(得分:3)
- 每次写入时,HttpUrlConnection都会向服务器发送4096个字节?最后一次是1k?
醇>
是
- 请注意,我使用了10k缓冲区来写入输出流,块大小和缓冲区大小不一样重要吗?
醇>
没有
- 如果我在代码中禁用ChunkedStreamMode,那么与我设置的代码4096相比,效果是什么?
醇>
结果是整个输出都被缓冲,直到你关闭,这样可以先设置和发送Content-length头,这会增加很多延迟和内存。在大文件的情况下不推荐使用。