怎么使用ByteArrayOutputStream下载文件
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,本篇内容主要讲解"怎么使用ByteArrayOutputStream下载文件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么使用ByteArrayOut
千家信息网最后更新 2025年11月10日怎么使用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安全错误
数据库的锁怎样保障安全
数据库安全机制有哪些应用
教师怎样使用网络技术教学
湖南广电网络安全事件
事业单位数据库
服务器不连网怎么连接笔记本
数据库 数据不一致
java 显示数据库
深圳推广机器人rpa软件开发
79小说软件开发
数据库管理模型有3种层次模型
专升本计算机数据库技术
软件开发商违反竞业限制
传媒以网络技术为标志
网络安全教育通知
西安汇丰软件开发中心
金山区正规网络技术服务产品
sql连接数据库语句
江西网络安全技术试题
全球癌症报告数据库
服务器用的是什么路由器
联想600g服务器硬盘
刑法网络安全
广东一站式软件开发价格合理
ios我的世界服务器地址
嘉兴云软件开发是做什么的
中国现有软件开发人员
寒假网络安全防诈骗作文
关于发展数字经济网络安全
网络安全主题黑板报花边
长沙app软件开发有哪些