gpt4 book ai didi

java - HttpURLConnection 返回的 InputStream 中的数据在你读取之前存储在哪里?

转载 作者:可可西里 更新时间:2023-11-01 16:33:40 26 4
gpt4 key购买 nike

我正在编写一个使用 HttpURLConnection 的 Android 应用程序下载一些数据。 getInputStream()方法返回一个 InputStream,我可以从中读取数据。在我从这个流中读取之前,数据存储在哪里?是否已全部下载并且网络堆栈正在处理保存它?或者是否还有需要从服务器检索的数据?我可以关闭连接并仍然从 InputStream 中读取吗?我的问题是关于性能和在数据很大的情况下做一些负责任的事情。

最佳答案

Where is the data stored before I read from this stream?

(我不知道,你必须阅读源代码。)

Is it all downloaded and the network stack is taking care of holding on to it?

不,它是一个流。数据以字节流形式到达,您可以从流中读取。

Or could there still be data that needs to be retrieved from the server?

是的,这是正常情况,尤其是当负载重量超过几千字节时。

Can I close the connection and still read from the InputStream?

简短回答:否。

你的意思是从 HttpURLConnection 调用 disconnect()?不确定这是否可能,但我不会那样做。它表明您不想在不久的将来进行后续请求。这可能意味着连接将在物理上关闭。

或者您的意思是调用 InputStream.close()?我敢肯定,当您尝试从已关闭的流中读取数据时,您会遇到某种类型的 IllegalStateExceptionIOException


通常 HttpURLConnection 是您应用程序的不错选择。遇到问题可以看看这个(不全)list of libraries and helpers在 Android 上执行 HTTP 请求时,您可以使用它来让您的生活更轻松。也许你可以利用 android.app.DownloadManager .

关于java - HttpURLConnection 返回的 InputStream 中的数据在你读取之前存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24962166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com