InputStream object = MinioUtil.getObjectFromMinio(breakObjectDTO.getBucketName(), breakObjectDTO.getObjectName())
int count = object.available();
count一直为0
为啥minio getObject 得到的InputStream大小为0 求解答
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
一起随缘 2022-05-09 09:08关注方法可以在读写操作前先得知数据流里有多少个字节可以读取。需要注意的是,如果这个方法用在从本地文件读取数据时,一般不会遇到问题,但如果是用于网络操作,就经常会遇到一些麻烦。
比如,Socket通讯时,对方明明发来了1000个字节,但是自己的程序调用available()方法却只得到900,或者100,甚至是0,感觉有点莫名其妙,怎么也找不到原因。
其实,这是因为网络通讯往往是间断性的,一串字节往往分几批进行发送。本地程序调用available()方法有时得到0,
这可能是对方还没有响应,也可能是对方已经响应了,但是数据还没有送达本地。对方发送了1000个字节给你,也许分成3批到达,这你就要调用3次available()方法才能将数据总数全部得到。
所以,使用available方法时处理输入流时,需要对count进行判断,然后在处理文件流。可以参考如下链接:https://www.cnblogs.com/sinceForever/p/8454381.html本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 8