Java中,inputstream转为byte数组
时间: 2024-10-24 15:10:57 浏览: 44
在Java中,将InputStream转换为byte数组通常需要通过缓冲流(BufferedInputStream)配合字节数组输出流(ByteArrayOutputStream)。这是因为InputStream本身并不能直接读取到byte数组,其设计目的是为了支持二进制数据的一次性读取。以下是简单的步骤:
```java
import java.io.*;
import java.nio.ByteBuffer;
public byte[] inputStreamToByteArray(InputStream is) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
byte[] buffer = new byte[4096]; // 设置一个合理的缓冲大小
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1) { // 当达到文件结束或者读取错误时,read返回-1
baos.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close(); // 关闭输入流,释放资源
} catch (IOException e) {
e.printStackTrace();
}
}
return baos.toByteArray(); // 返回转换后的byte数组
}
```
在这个例子中,我们首先创建了一个 ByteArrayOutputStream 来存储从 InputStream 读取的数据,然后使用循环逐块读取 InputStream 的内容并写入 ByteArrayOutputStream,最后将 ByteArrayOutputStream 转换为 byte 数组。
阅读全文