JAVA获取InputStream的contentLength问题
时间: 2023-10-25 19:15:08 浏览: 331
java InputStream读取数据问题
如果你想获取一个 InputStream 的 content length(内容长度),你需要先使用 `getContentLength()` 方法获取它的长度。但是,有些 InputStream 并没有实现 `getContentLength()` 方法,此时你需要使用其他的方式来获取 InputStream 的长度。
一种可行的方式是使用 `ByteArrayOutputStream` 类将 InputStream 中的数据读取到内存中并计算字节总数,代码示例如下:
```
public static int getInputStreamLength(InputStream inputStream) throws IOException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int length = 0;
while ((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
outputStream.close();
return outputStream.size();
}
```
这个方法将 InputStream 中的数据读取到一个 ByteArrayOutputStream 中,然后返回 ByteArrayOutputStream 的大小。注意,这种方式会将整个 InputStream 中的数据读取到内存中,所以对于大文件来说可能会导致内存溢出。
阅读全文