InputStream转byte[]
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[]相关推荐
- 基于java的InputStream.read(byte[] b,int off,int len)算法学习!
public int read(byte[] b,int off,int len)throws IOException 将输入流中最多 len 个数据字节读入字节数组.尝试读取多达 len 字节,但可 ...
- java stream 转 file_java 中 byte[]、File、InputStream 互相转换
1.将File.FileInputStream 转换为byte数组: File file = new File("test.txt"); InputStream input = n ...
- android InputStream中read()与read(byte[] b)
今天,简单讲讲android里的 InputStream的read()读取文件的使用. 这两个方法在抽象类InputStream中都是作为抽象方法存在的, JDK API中是这样描述两者的: r ...
- java中byte,String,InputStream之间的转换
Java代码 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.I ...
- java InputStream读取数据问题【转http://cuisuqiang.iteye.com/blog/1434416】
首先请查看一下JavaAPI,可以看到InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b, int off, int len).其中r ...
- 如何将OutputStream转换为InputStream?
本文翻译自:How to convert OutputStream to InputStream? I am on the stage of development, where I have two ...
- 文件到Java中的byte []
如何将java.io.File转换为byte[] ? #1楼 如果要将字节读取到预分配的字节缓冲区中,此答案可能会有所帮助. 您的第一个猜测可能是使用InputStream read(byte[]) ...
- 记录一次Socket的异常:InputStream.read()阻塞问题
起先是在Socket编程时,服务端取得客户端发送的数据,但是在InputStream.read()的时候,一直停在那,然后取了解了read方法才知道阻塞问题 代码示例: //端口数据取得 byte[] ...
- Request.InputStream 将数据作为XML数据发送
将数据作为XML数据发送,例如: public voidPostXml(stringurl, stringxml) { byte[] bytes = Encoding.UTF8.GetByte ...
最新文章
- 怪不的软件开发这么挣钱,原来是有这么多职位
- python编程语言能干什么-编程语言Python,可以用来干什么
- feign接口调用出现连接超时
- 一步步编写操作系统 57 门、调用门与RPL序 2
- java list top_Java程序员最常犯的错误盘点之Top 10
- 30岁就退休,你也可以做到
- PAT甲级1016 (map,排序)
- 我们真的搞懂这些排序算法了吗?(一)
- 6.2. ExtUtils::MakeMaker
- 优先队列练习(又是我大钟神)
- Win10 CMD命令大全—超好用快捷键
- idea出现的怪异现象
- excel学习-批量填充单元格
- Windows10怎么让某个软件禁止联网?设置软件禁止联网的方法
- MSP430CPU介绍
- 华东师范大学计算机保研方案,经验分享:华东师范大学的成功保研之路(面试干货)...
- 基于百度地图API的WinForm地图
- Android 使用Webview加载PDF文件
- web前端面试题完美整理/涵盖html,CSS、JS、浏览器、Vue、React、移动web。
- Findbugs修改总结
热门文章
- linux使用sts4,视听说sts4-4
- leetcode:2448. 使数组相等的最小开销【猜结论落在给定点 + 考虑初始值和变化量 + 三分法模板学习】
- 全国信息竞赛语言有python吗_2019年全国信息学竞赛有哪些
- pandas 中处理日期相减问题
- jar启动指定JDK/JRE 安装路径教程
- Codeforces Round #644 (Div. 3) H.Binary Median
- 黑客入门常用的8种工具
- 【每日AI】什么是矢量字库?
- 使用Google Colab Pro训练模型并且使用distiller进行模型优化
- LightRoom预xmp文件如何导入设置?