InputStream转byte[]其实是比较简单的,直接使用IOUtils就可以了:

byte[] bytes = IOUtils.toByteArray(inputStream);

又或者说这样:

public static byte[] toByteArray(InputStream input) throws IOException {ByteArrayOutputStream output = new ByteArrayOutputStream();byte[] buffer = new byte[1024*4];int n = 0;while (-1 != (n = input.read(buffer))) {output.write(buffer, 0, n);}return output.toByteArray();}

但是需要注意的是,将InputStream粗暴地转成byte[],只适用于文件较小的时候,当如果文件有好几个G,再这样转,内存就要溢出了。
如果我们需要把InputStream保存到本地,在遇见较大的文件时可以试试使用IOUtils.copy,它会一点点搬,默认一次性应该是读8k左右:

      InputStream is = downloadClient.download(downloadDTO);if(is == null){LOGGER.info("is == null");}//文件下载路径String tempDirPath = PathTool.absolutePath();LOGGER.info("file download path:"+tempDirPath);File tmpDir = new File(tempDirPath);if (!tmpDir.exists()) {try {tmpDir.mkdirs();} catch (Exception e) {throw new xxxException(xxxErrorCode.ERR_FILE_CREATE);}}LOGGER.info("file download dirs exist");File tmpFile = new File(tmpDir, downloadDTO.getFileName());if (!tmpFile.exists()) {try {tmpFile.createNewFile();} catch (IOException e) {throw new xxxException(xxxErrorCode.ERR_FILE_CREATE);}}LOGGER.info("file exist");//保存文件OutputStream os = null;try {os = new FileOutputStream(tmpFile);if(is != null){IOUtils.copy(is,os);}}catch (FileNotFoundException fileNotFoundException){throw new xxxException(xxxErrorCode.ERR_FILE_CREATE, fileNotFoundException.getCause());}catch (IOException e) {……} finally {try {if (os != null) {os.close();}} catch (IOException e) {……}}

InputStream转byte[]相关推荐

  1. 基于java的InputStream.read(byte[] b,int off,int len)算法学习!

    public int read(byte[] b,int off,int len)throws IOException 将输入流中最多 len 个数据字节读入字节数组.尝试读取多达 len 字节,但可 ...

  2. java stream 转 file_java 中 byte[]、File、InputStream 互相转换

    1.将File.FileInputStream 转换为byte数组: File file = new File("test.txt"); InputStream input = n ...

  3. android InputStream中read()与read(byte[] b)

    今天,简单讲讲android里的  InputStream的read()读取文件的使用. 这两个方法在抽象类InputStream中都是作为抽象方法存在的, JDK API中是这样描述两者的: r ...

  4. java中byte,String,InputStream之间的转换

    Java代码   import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.I ...

  5. java InputStream读取数据问题【转http://cuisuqiang.iteye.com/blog/1434416】

    首先请查看一下JavaAPI,可以看到InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b, int off, int len).其中r ...

  6. 如何将OutputStream转换为InputStream?

    本文翻译自:How to convert OutputStream to InputStream? I am on the stage of development, where I have two ...

  7. 文件到Java中的byte []

    如何将java.io.File转换为byte[] ? #1楼 如果要将字节读取到预分配的字节缓冲区中,此答案可能会有所帮助. 您的第一个猜测可能是使用InputStream read(byte[]) ...

  8. 记录一次Socket的异常:InputStream.read()阻塞问题

    起先是在Socket编程时,服务端取得客户端发送的数据,但是在InputStream.read()的时候,一直停在那,然后取了解了read方法才知道阻塞问题 代码示例: //端口数据取得 byte[] ...

  9. Request.InputStream 将数据作为XML数据发送

    将数据作为XML数据发送,例如: public voidPostXml(stringurl, stringxml) {     byte[] bytes = Encoding.UTF8.GetByte ...

最新文章

  1. 怪不的软件开发这么挣钱,原来是有这么多职位
  2. python编程语言能干什么-编程语言Python,可以用来干什么
  3. feign接口调用出现连接超时
  4. 一步步编写操作系统 57 门、调用门与RPL序 2
  5. java list top_Java程序员最常犯的错误盘点之Top 10
  6. 30岁就退休,你也可以做到
  7. PAT甲级1016 (map,排序)
  8. 我们真的搞懂这些排序算法了吗?(一)
  9. 6.2. ExtUtils::MakeMaker
  10. 优先队列练习(又是我大钟神)
  11. Win10 CMD命令大全—超好用快捷键
  12. idea出现的怪异现象
  13. excel学习-批量填充单元格
  14. Windows10怎么让某个软件禁止联网?设置软件禁止联网的方法
  15. MSP430CPU介绍
  16. 华东师范大学计算机保研方案,经验分享:华东师范大学的成功保研之路(面试干货)...
  17. 基于百度地图API的WinForm地图
  18. Android 使用Webview加载PDF文件
  19. web前端面试题完美整理/涵盖html,CSS、JS、浏览器、Vue、React、移动web。
  20. Findbugs修改总结

热门文章

  1. linux使用sts4,视听说sts4-4
  2. leetcode:2448. 使数组相等的最小开销【猜结论落在给定点 + 考虑初始值和变化量 + 三分法模板学习】
  3. 全国信息竞赛语言有python吗_2019年全国信息学竞赛有哪些
  4. pandas 中处理日期相减问题
  5. jar启动指定JDK/JRE 安装路径教程
  6. Codeforces Round #644 (Div. 3) H.Binary Median
  7. 黑客入门常用的8种工具
  8. 【每日AI】什么是矢量字库?
  9. 使用Google Colab Pro训练模型并且使用distiller进行模型优化
  10. LightRoom预xmp文件如何导入设置?