在网络流中如果不使用任何标记,是不知道流是否结束的。但在读到网络流时,我们是可以知道这次可以读多少字节的内容,方法就是使用inputStream. available (),但一定要在调用read()至少一次之后,也就是说available方法一定要在read后调用,不然就只能得到零值。注,这里所的是网络传输中的流是这样,但文件流不是这样的,文件流可以直接使用available来判断还有多少字节的内容可读取。
InputStream的available()含义:返回此输入流在不受阻塞情况下能读取的字节数。网络流与文件流不同的关键就在于是否“受阻”二字,网络socket流在读取时如果没有内容read()方法是会受阻的,所以从socket初始化的输入流的available也是为零的,所以要read一字节后再使用,这样可用的字节数就等于 available + 1。但文件读取时read()一般是不会受阻的,因为文件流的可用字节数
网络socket输入流可用字节数代码所示:
文件流的可用字节数如代码所示:
本文详细解释了网络流与文件流在读取数据时可用字节数的不同概念与使用方法,重点说明了网络流在读取数据时的阻塞现象与如何正确使用available()方法来获取可用字节数,同时对比了文件流的可用字节数计算方式,提供了一种简单易懂的方法来理解这两种不同流类型的读取行为。
2049

被折叠的 条评论
为什么被折叠?



