心情起飞 2022-05-08 17:54 采纳率: 100%
浏览 822
已结题

为啥minio getObject 得到的InputStream大小为0 求解答

InputStream object = MinioUtil.getObjectFromMinio(breakObjectDTO.getBucketName(), breakObjectDTO.getObjectName())
int count = object.available();
count一直为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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月18日
  • 已采纳回答 5月10日
  • 赞助了问题酬金10元 5月8日
  • 创建了问题 5月8日