Java中如何将InputStream转Byte Array或ByteBuffer呢?

书欣 Java经验 发布时间:2022-08-11 14:12:14 阅读数:18959 1
下文笔者讲述java中InputStream转(Byte Array或ByteBuffer)的方法分享,如下所示
实现思路:
    方式1:使用java原生代码,借助你们的构造函数进行相应的转换
	方式2:借助Guava框架
	方式3:使用Commons IO
例:
原生java方式
@Test
public void testa() 
  throws IOException {
    InputStream initialStream = new ByteArrayInputStream(new byte[] { 0, 1, 2 });
 
    byte[] targetArray = new byte[initialStream.available()];
    initialStream.read(targetArray);
}
 
对于应缓冲流,我们无法知道其底层数据确切大小,实现需更加灵活:

@Test
public void testb()   throws IOException {
    InputStream is = new ByteArrayInputStream(new byte[] { 0, 1, 2 });
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();
    int nRead;
    byte[] data = new byte[1024];
    while ((nRead = is.read(data, 0, data.length)) != -1) {
        buffer.write(data, 0, nRead);
    }
 
    buffer.flush();
    byte[] byteArray = buffer.toByteArray();
}

使用Guava实现

@Test
public void testc() 
  throws IOException {
    InputStream initialStream = ByteSource.wrap(new byte[] { 0, 1, 2 }).openStream();
     
    byte[] targetArray = ByteStreams.toByteArray(initialStream);
}

使用Commons IO

使用Commons IO提供的IOUtils工具类
@Test
public void testd() 
  throws IOException {
    ByteArrayInputStream initialStream = new ByteArrayInputStream(new byte[] { 0, 1, 2 });
     
    byte[] targetArray = IOUtils.toByteArray(initialStream);
}
 
IOUtils.toByteArray() 方法内部缓存输入流
 不再需要使用BufferedInputStream实例
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202208/16601983814211.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者