InputStream中的available()方法的使用问题

看api中说不能用这个去分配byte[]数组大小,原文如下:NotethatwhilesomeimplementationsofInputStreamwillreturn... 看api中说不能用这个去分配byte[]数组大小,原文如下:
Note that while some implementations of InputStream will return the total number of bytes in the stream, many will not. It is never correct to use the return value of this method to allocate a buffer intended to hold all data in this stream.
可是还是看到很多这样的写法
new byte[in.available()];
求指导。
展开
 我来答
沈阳java
推荐于2018-03-15 · TA获得超过1507个赞
知道小有建树答主
回答量:797
采纳率:50%
帮助的人:682万
展开全部
能否使用取决于实现了InputStream这个抽象类的具体子类中有没有实现available这个方法。如果实现了那么就可以取得大小,如果没有实现那么就获取不到。例如FileInputStream就实现了available方法,那么就可以用new byte[in.available()];这种方式。但是,网络编程的时候Socket中取到的InputStream,就没有实现这个方法,那么就不可以使用这种方式创建数组。
蓝星人抢不到
2013-04-14 · TA获得超过763个赞
知道小有建树答主
回答量:924
采纳率:0%
帮助的人:602万
展开全部
上面说的很清楚啊,这个方法的实现,有的返回字节总数,有的不是,所以不能这么开数组,然后妄图用这个数组存储所有数据,有些这么开可能是实现是返回总字节数的,也有可能是确定缓冲区大小
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fylsh
2013-04-14 · TA获得超过950个赞
知道小有建树答主
回答量:1472
采纳率:0%
帮助的人:1053万
展开全部
有的情况通过available取到的字节数可能不是流总的字节数。建议不这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式