java - java中inputstream.read读取了多少数据

标签 java inputstream

我在看inputstream对象的read方法的定义,我对每次读取多少数据感到困惑,因为它说“读取一些字节”

public int read(byte[] b)
         throws IOException
Reads some number of bytes from the input stream and stores them into the buffer array b. The number of bytes actually read is returned as an integer. This method blocks until input data is available, end of file is detected, or an exception is thrown.

假设我有一个大小为 200 的缓冲区数组,输入流中的数据为 100 字节。是否保证 inputStream.read 获取全部 100 个字节?

最佳答案

这个接口(interface)(或者更准确地说:抽象类)的全部要点:您可以绝对不依赖假设读取了多少字节。您总是总是总是必须检查该方法的返回值才能知道。

背景:这个接口(interface)有很多不同的实现。有些是我的缓冲区,有些可能不是。有些读取“固定”输入(可能来自内存中的现有数据)。有人可能会决定给你一个转向互联网的流,下载一个 10 GB 的文件,然后开始一个字节一个字节地发送给你。

你唯一知道的是:方法返回

the total number of bytes read into the buffer

故事结束。

关于java - java中inputstream.read读取了多少数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45837998/

相关文章:

java - 非 react 性客户端(RestTemplate)是否可以使用 react 性 REST API(WebFlux)

ios - 如何在 iOS 中使用套接字连接从服务器获取响应?

java - 达到指定文件大小后停止 HtmlUnit 下载

android - 使用InputStream和Scanner android从.txt文件读取数据

java - Java 中的包装器和扫描器类

java - 正则表达式-没有特定字符串的前缀和后缀

javascript - 从 Javascript 调用 Wicket 代码

Java/Tomcat与Oracle 10g连接

android - 使用 Dropbox API 通过 Android 上传文件

java - 来自 URL 的 InputStream