代码之家  ›  专栏  ›  技术社区  ›  Tom

HttpUrlConnection的影响。setChunkedStreamingMode

  •  9
  • Tom  · 技术社区  · 7 年前

    我不太了解 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。

    1. HttpUrlConnection将在每次写入时向服务器发送4096字节?最后一次是1公里?

    2. 如果我在代码中禁用ChunkedStreamMode,与我设置的4096代码相比,效果如何?

    1 回复  |  直到 7 年前
        1
  •  5
  •   user207421    7 年前
    1. HttpUrlConnection将在每次写入时向服务器发送4096字节?最后一次是1公里?

    其效果是,整个输出都会被缓冲,直到您关闭为止,因此可以先设置并发送内容长度标头,这会增加大量延迟和内存。对于大文件,不建议使用。