万能流ByteArrayOutputStream

本文介绍了一种使用Java的ByteArrayOutputStream进行图片文件流转换的方法。通过将BufferedImage对象写入ByteArrayOutputStream,并进一步转化为byte数组,最后再通过ByteArrayInputStream重新获取输入流,实现了图片数据在不同形式间的灵活转换。

任意流转换的桥梁,当不能创建流时,ByteArrayOutputStream 就是必杀器!

 

java.io.ByteArrayOutputStream output = new java.io.ByteArrayOutputStream();
ImageIO.write(bi, "gif", output);
byte[] buff = output.toByteArray();
java.io.InputStream is = new java.io.ByteArrayInputStream(buff);

提供的引用内容未提及将`BufferedOutputStream`转换为`ByteArrayOutputStream`的方法。不过,可以通过一定的编程思路来实现。 由于`BufferedOutputStream`是对底层输出的包装,而`ByteArrayOutputStream`是将数据写入字节数组的输出。可以通过`ByteArrayOutputStream`作为`BufferedOutputStream`的底层输出,这样就可以将数据写入`ByteArrayOutputStream`中。 以下是示例代码: ```java import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class BufferedToByteArray { public static void main(String[] args) { // 创建一个 ByteArrayOutputStream ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // 使用 ByteArrayOutputStream 创建一个 BufferedOutputStream BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(byteArrayOutputStream); try { // 向 BufferedOutputStream 写入数据 String data = "Hello, World!"; bufferedOutputStream.write(data.getBytes()); // 刷新 BufferedOutputStream 确保数据写入 ByteArrayOutputStream bufferedOutputStream.flush(); // 现在可以从 ByteArrayOutputStream 获取字节数组 byte[] byteArray = byteArrayOutputStream.toByteArray(); // 打印字节数组对应的字符串 System.out.println(new String(byteArray)); } catch (IOException e) { e.printStackTrace(); } finally { try { // 关闭 if (bufferedOutputStream != null) { bufferedOutputStream.close(); } if (byteArrayOutputStream != null) { byteArrayOutputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } } ``` 在上述代码中,先创建了`ByteArrayOutputStream`,然后用它创建了`BufferedOutputStream`。向`BufferedOutputStream`写入数据后,刷新`BufferedOutputStream`将数据写入`ByteArrayOutputStream`,最后可以从`ByteArrayOutputStream`获取字节数组。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值