当前位置: 首页 > 知识库问答 >
问题:

在读取输入流中由输入流返回的数据之前,这些数据存储在哪里?

苏涵润
2023-03-14

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

共有1个答案

虞祯
2023-03-14

在我从这个流中读取数据之前,数据存储在哪里?

(我不知道。您必须阅读源代码。

是不是都下载了,网络堆栈正在处理保存它?

不,它是一条小溪。数据以字节流的形式到达,您可以从该流中读取数据。

或者仍然有需要从服务器检索的数据吗?

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

我可以关闭连接并仍从InputStream读取吗?

简短回答:没有。

您的意思是从网络连接调用断开连接()不确定这是否可能,但我不会这样做。它表示您不希望在不久的将来发出后续请求。这可能意味着连接将在物理上关闭。

或者你的意思是调用InputStream.close()?我很确定当您尝试从关闭的流中读取时,您会得到某种IllegalStateExceptionIOException

通常HttpURLConnection是您的应用程序的好选择。如果你遇到任何问题,你可以看看这个(不完整的)库和帮助程序列表,当你在Android上执行HTTP请求时,你可以使用它来简化你的生活。也许你可以利用android.app.DownloadManager。

 类似资料:
  • 我目前正试图从服务器读取图像文件,但得到的数据不完整或 这与缓冲区大小有关吗?我已经尝试使用静态大小而不是ContentLength。敬请指教。

  • 我想得到输入流作为JSON数组从一个网址。如何设置源代码,以便在apache flink中使用datastream连续获得输入。简而言之,我想从一个url连续获得json数据,而不会关闭flink作业。

  • 我是C语言的初学者。如果我的问题是蹩脚的,请不要介意。在我写的这个程序中,当我第一次使用“for”循环时,我希望一个数组中只存储3个值,但它存储4个值,在接下来的“for”循环中,如预期的那样显示3个值。我的问题是为什么在第一个for循环中需要4个值而不是3个?

  • 我有一个常见的任务问题,我可以找到任何解决方案或帮助(也许我需要传递一些属性来工作?)我使用本地服务器1.3.0.M2并创建简单的流 在日志中,我得到了这个: 2017-09-28 12:31:00.644 信息 5156 --- [ -C-1] o.. a.k.c.c.internals.AbstractCoordinator : 成功加入第 1 代的组测试 2017-09-28 12:31:0

  • 我在一个项目中使用Keras,我不明白Keras是如何使用数据输入的,也就是说Keras在创建第一层时是如何读取我们的输入数据的。 例如: 型号=顺序() 在这个模型中,有10个神经元和一个三维输入意味着什么?如果输入数据有100个示例(矩阵数据中的行数),Keras如何使用它们? 非常感谢。

  • 这与这个问题最为相似。 我正在Dataflow 2.x中创建一个管道,它从Pubsub队列获取流式输入。进入的每一条消息都需要通过来自Google BigQuery的一个非常大的数据集进行流式传输,并且在写入数据库之前附加了所有相关的值(基于一个键)。 问题是来自BigQuery的映射数据集非常大--任何将其用作侧输入的尝试都失败了,数据流运行程序会抛出错误“java.lang.IllegalAr