iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么使用ByteArrayOutputStream下载文件
  • 480
分享到

怎么使用ByteArrayOutputStream下载文件

2023-06-22 00:06:04 480人浏览 八月长安
摘要

本篇内容主要讲解“怎么使用ByteArrayOutputStream下载文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用ByteArrayOutputStream下载文件”吧!使用By

本篇内容主要讲解“怎么使用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();

使用inputStream.read(buffer)方法分段的把txt文本中的内容写入buffer数组

这里为buffer数组指定了长度为3,所以“hello world!”这组长度为11的数据会被分成4次写入到buffer数组中。

当inputStream.read(buffer)把数据都写入到buffer数组之后,它最后还会返回一次len为-1的值,代表数据完全读完。

使用outStream.write(buffer, 0, len)方法,在while循环体内把每次写入到buffer数组的值再次叠加写入到内存缓冲区中。

使用outStream.toByteArray()方法把内存缓冲区中的数据流转换成字节数组。

最后把字符数组转换成字符串进行返回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下载文件”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么使用ByteArrayOutputStream下载文件

本文链接: https://www.lsjlt.com/news/301736.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用ByteArrayOutputStream下载文件
    本篇内容主要讲解“怎么使用ByteArrayOutputStream下载文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用ByteArrayOutputStream下载文件”吧!使用By...
    99+
    2023-06-22
  • 如何使用ByteArrayOutputStream下载文件
    目录使用ByteArrayOutputStream下载文件使用POI导出数据,然后将其下载使用ByteArrayOutputStream解决IO乱码说下经过小结一下使用ByteArr...
    99+
    2024-04-02
  • 使用java怎么下载web文件
    使用java怎么下载web文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对...
    99+
    2023-06-14
  • 怎么使用curl命令下载文件
    这篇文章主要介绍“怎么使用curl命令下载文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用curl命令下载文件”文章能帮助大家解决问题。curl是一个开源的用于数据传输的命令行工具与库,它...
    99+
    2023-06-27
  • python中怎么使用requests下载文件
    这篇文章主要介绍了python中怎么使用requests下载文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中怎么使用requests下载文件文章都会有所收获,下面我们一起来看看吧。使用reque...
    99+
    2023-06-29
  • Linux中怎么使用Aria2下载文件
    Linux中怎么使用Aria2下载文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Aria2是一个免费的开源轻量级多协议命令行实用程序,可以从Internet上下载文件。...
    99+
    2023-06-28
  • 怎么在java中使用FTP下载文件
    怎么在java中使用FTP下载文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面...
    99+
    2023-06-14
  • Linux文件下载工具wget怎么使用
    这篇“Linux文件下载工具wget怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux文件下载工具wget怎么...
    99+
    2023-06-28
  • 使用Apache HttpClient下载文件
    使用Apache HttpClient下载文件的步骤如下:1. 首先,导入Apache HttpClient的依赖包。如果使用Mav...
    99+
    2023-09-26
    Apache
  • Linux中怎么使用wget命令下载文件
    本篇文章给大家分享的是有关Linux中怎么使用wget命令下载文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  实例1 :下载单个文件  # wget http://mir...
    99+
    2023-06-13
  • 使用ByteArrayOutputStream实现将数据写入本地文件
    目录ByteArrayOutputStream将数据写入本地文件那来了解一下ByteArrayOutPutStream吧在表格输出时FileOutputStream的写入方法把读取的...
    99+
    2024-04-02
  • js中怎么用文件流下载csv文件
    这篇文章主要讲解了“js中怎么用文件流下载csv文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js中怎么用文件流下载csv文件”吧!js使用文件流下载csv文件的实现方法理解 Blob ...
    99+
    2023-07-05
  • 如何使用vbs下载文件
    这篇文章主要讲解了“如何使用vbs下载文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用vbs下载文件”吧!说到使用vbs下载文件是不是想到了XMLHTTP呢,呵呵,以下是比较经典的...
    99+
    2023-06-08
  • 怎么在java中使用Servlet程序下载文件
    这篇文章给大家介绍怎么在java中使用Servlet程序下载文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,...
    99+
    2023-06-14
  • Linux下怎么上传、下载文件
    这篇文章给大家分享的是有关Linux下怎么上传、下载文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。lrzsz-0.12.20.tar.gz是一款linux下命令行界面上支持上传和下载的第三方工具,能够起到很方...
    99+
    2023-06-28
  • 怎么在github下载文件
    GitHub作为全球最大的开源社区,不仅提供了交互式代码托管和版本控制,还提供了多种下载方式,免费高效。在GitHub上下载文件,有多种方式可供选择,包括git clone、Download ZIP、使用浏览器等。下面,我们将详细介绍这些下...
    99+
    2023-10-22
  • JAVA怎么下载大文件
    您可以使用Java的URL类和URLConnection类来下载大文件。下面是一个简单的示例代码:```javaimport jav...
    99+
    2023-08-25
    JAVA
  • vue中怎么下载excel流文件及设置下载文件名
    这篇文章给大家分享的是有关vue中怎么下载excel流文件及设置下载文件名的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。概述导出excel需求,当点击下载模板或下载反馈结果,axios发起后端接口请求,返回的数据...
    99+
    2023-06-15
  • python如何使用requests下载文件
    这篇文章主要介绍了python如何使用requests下载文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。requests可以返回HTTP的meta信息。import&nb...
    99+
    2023-06-17
  • python如何使用urllib.request下载文件
    这篇文章主要为大家展示了“python如何使用urllib.request下载文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何使用urllib.request下载文件”这篇文章...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作