如何将字符串、字节数组转为输入流

 更新时间:2024年05月30日 14:55:38   作者:卜大爷  
这篇文章主要介绍了如何将字符串、字节数组转为输入流问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

将字符串、字节数组转为输入流

将字符串转成输入流:

String str = "budaye";
ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes("UTF-8"));

ByteArrayInputStream是字节数组输入流,它继承于InputStream。

它包含一个内部缓冲区,该缓冲区包含从流中读取的字节。

如果我们想要将字符串或者字节数组转换成字符流,可以使用ByteArrayInputStream类。

输入流,输出流,文件,字节数组,Base64字符串互相转换

输入流转换成字节数组

通过我封装的下载服务获取输入流,然后使用 StreamUtils.copyToByteArray去获取字节数组

InputStream inputStream = fileClient.downloadFile(tenantId, HivpBaseConstants.FileUpload.BUCKET_NAME_CAN, l.getUrl());
                                byte[] imgByte = StreamUtils.copyToByteArray(inputStream);

注意流只能使用一次,当用完流之后需要关闭流。

输入流转换成base64编码字符串

我们需要先转换成字节数组然后再转换字符串

  • 转换字节数组另一种解决方式
  public static byte[] readInputStream(InputStream is) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int length = 0;
        try {
            while ((length = is.read(buffer)) != -1) {
                baos.write(buffer, 0, length);
            }
            baos.flush();
        } catch (IOException e) {
            logger.error("IOException", e);
        }
        byte[] data = baos.toByteArray();
        try {
            is.close();
            baos.close();
        } catch (IOException e) {
            logger.error("IOException", e);
        }
        return data;
    }
  • 字节数组转换成Base64字符串
imageFile = Base64Utils.encodeToString(data);

输入流转换为文件

  //数据流转MultipartFile文件
                                MultipartFile multipartFile = new MockMultipartFile("file", "file" +"."+ fileType, fileType, inputStream);
                                ResponseEntity<ResponseCommonDTO> recognizeResult = hcanRemoteService.originalCheck(tenantId, companyCode, employeeNumber, multipartFile);

将本地的文件转换成输入流

String path = "C:\\Users\\mai\\Desktop\\发票测试集合\\aaaaaaaaaa.pdf";
File file = new File(path);
InputStream ins = new FileInputStream(file);

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • springboot日期格式化及时差问题分析

    springboot日期格式化及时差问题分析

    这篇文章主要介绍了springboot日期格式化,时差问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Java实现ArrayList排序的方法详解

    Java实现ArrayList排序的方法详解

    Java中常见的ArrayList排序方法主要为三种:JDK8的stream、Comparator#compare()和Comparable#compareTo(),本文将详解这三者的使用,需要的可以参考一下
    2022-05-05
  • Java FileUploadUtil工具类详解

    Java FileUploadUtil工具类详解

    这篇文章主要为大家详细介绍了Java FileUploadUtil工具类的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • SpringBoot如何使用@Cacheable进行缓存与取值

    SpringBoot如何使用@Cacheable进行缓存与取值

    这篇文章主要介绍了SpringBoot如何使用@Cacheable进行缓存与取值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • java解析dbf之通过javadbf包生成和读取dbf文件

    java解析dbf之通过javadbf包生成和读取dbf文件

    这篇文章主要介绍了java通过javadbf读取和生成DBF文件的方法,大家参考使用吧
    2014-01-01
  • 一篇文章带你深入了解Java基础(5)

    一篇文章带你深入了解Java基础(5)

    这篇文章主要给大家介绍了关于Java中方法使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • SpringBoot + layui 框架实现一周免登陆功能示例详解

    SpringBoot + layui 框架实现一周免登陆功能示例详解

    这篇文章主要介绍了SpringBoot+layui框架实现一周免登陆功能,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 详解Java实现多线程的三种方式

    详解Java实现多线程的三种方式

    这篇文章主要为大家详细介绍了Java实现多线程的三种方式,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • activemq整合springboot使用方法(个人微信小程序用)

    activemq整合springboot使用方法(个人微信小程序用)

    这篇文章主要介绍了activemq整合springboot使用(个人微信小程序用),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Spring Retry 重试实例详解

    Spring Retry 重试实例详解

    这篇文章主要介绍了Spring Retry 重试,使用方式有两种分别是命令式和声明式,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10

最新评论