InputStream object = MinioUtil.getObjectFromMinio(breakObjectDTO.getBucketName(), breakObjectDTO.getObjectName())
int count = object.available();
count一直为0
方法可以在读写操作前先得知数据流里有多少个字节可以读取。需要注意的是,如果这个方法用在从本地文件读取数据时,一般不会遇到问题,但如果是用于网络操作,就经常会遇到一些麻烦。
比如,Socket通讯时,对方明明发来了1000个字节,但是自己的程序调用available()方法却只得到900,或者100,甚至是0,感觉有点莫名其妙,怎么也找不到原因。
其实,这是因为网络通讯往往是间断性的,一串字节往往分几批进行发送。本地程序调用available()方法有时得到0,
这可能是对方还没有响应,也可能是对方已经响应了,但是数据还没有送达本地。对方发送了1000个字节给你,也许分成3批到达,这你就要调用3次available()方法才能将数据总数全部得到。
所以,使用available方法时处理输入流时,需要对count进行判断,然后在处理文件流。可以参考如下链接:https://www.cnblogs.com/sinceForever/p/8454381.html
说明没有内容
使用工具连bucket,能正常下载吗?里面有内容吗?
有出现异常吗
1)看下源码InputStream :它只是一个抽象的类,我来帮你解读下这个方法:
public abstract class InputStream implements Closeable {
//查询流中还有多少可以读取的字节
// 在java中抽象类方法的实现一般有以下几种方式:
//1.抛出异常(java.util);
//2.“弱”实现。像这个方法就属于这种。子类在必要的时候覆盖它。
//3.“空”实现。
public int available() throws IOException {
return 0;
}
}