InputStream stream 转换成ByteArrayOutputStream out
时间: 2024-09-25 20:07:56 浏览: 42
java IO stream
3星 · 编辑精心推荐
InputStream (输入流) 和 ByteArrayOutputStream (字节输出流) 是Java中用于处理字节数据的不同类。如果你想将从InputStream读取的内容转换成ByteArrayOutputStream中的字节数组,你可以按照以下步骤操作:
1. 创建一个ByteArrayOutputStream实例:
```java
ByteArrayOutputStream out = new ByteArrayOutputStream();
```
2. 使用InputStream的read()方法逐字节读取数据,并将其写入到ByteArrayOutputStream中。这通常通过一个循环完成,直到没有更多的数据或遇到EOF(End Of File):
```java
int bytesRead;
while ((bytesRead = in.read()) != -1) {
out.write(bytesRead);
}
```
这里,`in`是要转换的InputStream对象。
3. 如果你想确保所有内容都被读取并写入了ByteArrayOutputStream,可以先获取当前ByteArrayOutputStream的大小再读取,之后清空它,然后再次填充:
```java
out.reset(); // 清空之前的字节
int totalBytesToWrite = in.available(); // 获取剩余可读字节数
out.write(in.read(new byte[totalBytesToWrite])); // 写入剩余所有数据
```
4. 转换完成后,你可以通过调用`toByteArray()`方法获取ByteArrayOutputStream的字节数组:
```java
byte[] byteArray = out.toByteArray();
```
阅读全文