【问题标题】:URLConnection.getInputStream: specifying byte range start but no endURLConnection.getInputStream:指定字节范围开始但没有结束
【发布时间】:2012-09-07 20:27:30
【问题描述】:

我的目标是只从远程服务器上的文件中读取从文件中特定字节位置开始的字节,而无需进行不必要的数据传输。我担心的是,在没有指定结束字节的情况下,从开始字节开始的整个文件都会在任何读取发生之前放入缓冲区。

当以这种方式指定字节范围时:

urlConn.setRequestProperty("Range","bytes="+byteRangeStart+"-")

然后后续得到一个InputStream,这个InputStream会包含文件从byteRangeStart到文件末尾的所有字节,意思是所有数据都是在获取InputStream时传输的,还是只有在读取InputStream时才传输的字节来自?

【问题讨论】:

    标签: java


    【解决方案1】:

    要求服务器从特定位置开始不会影响 URLConnection 在客户端的工作方式。

    当您在 URLConnection 上读取 InputStream 时,数据只会在您读取时传输。当然,任何一端的网络缓冲区中都会有一些数据等等,但我假设我们在这里讨论的是一个相当大的文件。

    【讨论】:

    • 是的,非常大的文件。那么状态是在服务器上维护的吗?
    • 我意识到开始范围不相关;问题应该只是关于 URLConnection,我现在阅读了与之建立连接的服务器似乎保持状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2020-02-25
    • 2022-12-19
    相关资源
    最近更新 更多