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

问题描述 投票:0回答:1

我正在使用LiveSDK,并且正在调试一些与取消下载有关的内容,并且遇到了奇怪的行为:在调用InputStrem.close()时,它花费的时间非常长,与正在下载的文件大小成正比,在其他情况下,当我关闭InputStream时,我编写的用于从Internet下载文件的方法会立即关闭,因此这对我来说真的很奇怪。有人知道为什么会发生这种情况吗?

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

java inputstream
1个回答
0
投票

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

“请注意,即使关闭被调用,此类也永远不会关闭基础流。相反,它将读取直到其关闭限制的” end“为止,这允许无缝执行后续的HTTP 1.1请求,而无需客户端要记住阅读响应的全部内容。“

我没有找到文档或其他可以帮助我了解此类实际工作方式的内容,但是,此类的close方法并没有真正关闭它,这并不直观。要强制停止下载,必须调用HttpApiRequest.abort(),InputStream将自动关闭。

© www.soinside.com 2019 - 2024. All rights reserved.