怎么使用ByteArrayOutputStream下载文件
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"怎么使用ByteArrayOutputStream下载文件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么使用ByteArrayOut
千家信息网最后更新 2026年11月03日怎么使用ByteArrayOutputStream下载文件
本篇内容主要讲解"怎么使用ByteArrayOutputStream下载文件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么使用ByteArrayOutputStream下载文件"吧!
使用ByteArrayOutputStream下载文件
//文件名称String filepath = ServletActionContext.getServletContext() .getRealPath(farmerQrCode.getQrCodeUrl()); File file = new File(filepath); String fileName = new Date().getTime()+".png";//设置请求信息 HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType(response.getContentType()); response.setHeader("Content-disposition", "attachment; filename="+fileName); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int len = 0; FileInputStream inputStream = new FileInputStream(file); byte [] buffer = new byte[3]; while((len = inputStream.read(buffer)) != -1) { baos.write(buffer, 0, len); } byte[] bytes = baos.toByteArray(); response.setHeader("Content-Length", String.valueOf(bytes.length)); BufferedOutputStream bos = null; bos = new BufferedOutputStream(response.getOutputStream()); bos.write(bytes); bos.close(); baos.close();使用POI导出数据,然后将其下载
//此处将HSSFWorkbook wb处理好,然后最后要导出文件时加上此代码。ByteArrayOutputStream baos = new ByteArrayOutputStream(); response.setContentType(response.getContentType()); response.setHeader("Content-disposition", "attachment; filename=monthPayment.xls"); wb.write(baos); byte[] bytes = baos.toByteArray(); response.setHeader("Content-Length", String.valueOf(bytes.length)); BufferedOutputStream bos = null; bos = new BufferedOutputStream(response.getOutputStream()); bos.write(bytes); bos.close(); baos.close();1、使用inputStream.read(buffer)方法分段的把txt文本中的内容写入buffer数组。
这里为buffer数组指定了长度为3,所以"hello world!"这组长度为11的数据会被分成4次写入到buffer数组中。
当inputStream.read(buffer)把数据都写入到buffer数组之后,它最后还会返回一次len为-1的值,代表数据完全读完。
2、使用outStream.write(buffer, 0, len)方法,在while循环体内把每次写入到buffer数组的值再次叠加写入到内存缓冲区中。
3、使用outStream.toByteArray()方法把内存缓冲区中的数据流转换成字节数组。
4、最后把字符数组转换成字符串进行返回return new String(data)。
使用ByteArrayOutputStream解决IO乱码问题
说下经过
今天在用s3接口做ceph储存的时候,要实现一个io下载的接口。
需要把InputStream转成byte[],一开始,是的写法是这样的:
byte[] buf = new byte[(int) fileSize]; InputStream in = ossObject.getObjectContent(); try { for (int n = 0; n != -1; ) { n = in.read(buf, 0, buf.length); } } catch (IOException e) { log.error(e.getMessage()); } finally { try { in.close(); } catch (IOException e) { log.error(e.getMessage()); } }可是下载的文件稍大一些,就会出现乱码。
于是换了网上推荐的,使用byte缓存的方法,来实现InputStream转成byte[]:
private static byte[] inputToByte(InputStream inStream, int fileSize) throws IOException { ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); byte[] buff = new byte[fileSize]; int rc; while ((rc = inStream.read(buff, 0, fileSize)) > 0) { swapStream.write(buff, 0, rc); } return swapStream.toByteArray(); }乱码的情况就解决了!
到此,相信大家对"怎么使用ByteArrayOutputStream下载文件"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
文件
数组
数据
方法
乱码
内容
内存
字符
接口
缓冲区
长度
学习
缓冲
实用
更深
代码
代表
信息
兴趣
再次
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司
互联网科技网
苏州找大状互联网科技有限公司
金融科技创新监管互联网金融
互联网公司 科技公司
易互联网科技有限公司
喔噻互联网科技
菲比寻常互联网科技
重庆科技学院互联网
互联网 科技馆
西安小鹰速贷互联网科技有限公司
高科技互联网发展前景如何
互联网科技如何创业
合肥互联网科技公司公章图片
互联网公司高科技产品
广州富喜互联网络科技
2021世界互联网领先科技成果发布
互联网硬科技公司
珠海东科互联网科技有限公司
保山互联网科技靠谱吗
小米移动互联网科技园
互联网加科技
壹账通互联网科技
时间互联网络科技
须眉科技是互联网公司吗
燊美集互联网科技有限公司
西安小鹰速贷互联网科技有限公司
厦门江牛科技互联网
东营紫格互联网科技
互联网高科技绘画