InputStream.close()需要很长时间才能完成(相对于文件大小的时间)

时间:2013-08-27 16:37:31

标签: java inputstream

我正在使用LiveSDK,我正在调试一些与取消下载相关的东西并遇到了一个奇怪的行为:当调用InputStrem.close()时,它需要很长时间,与正在下载的文件大小成比例,当我关闭它立即关闭的InputStream时,我写的用于从互联网上下载文件的其他方法,所以这对我来说真的很奇怪。 有没有人知道这会发生什么?

我遇到了这个link,可能有人帮助理解这个问题,但我做不到。

1 个答案:

答案 0 :(得分:0)

问题是使用的流是ContentLengthInputStream,文档说明如下:

“请注意,即使close被调用,此类也永远不会关闭底层流。相反,它会在关闭时读取其限制的”结束“,这样可以无缝执行后续HTTP 1.1请求,而不是要求客户记住阅读回复的全部内容。“

我没有找到帮助我理解这个类真正起作用的文档或其他东西,但是这个类的close方法并没有真正关闭它,这真的不直观。要强制停止下载,必须调用 HttpApiRequest.abort(),并且InputStream将自动关闭。