博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用ByteArrayOutputStream解决IO乱码问题的踩坑记录
阅读量:5325 次
发布时间:2019-06-14

本文共 1105 字,大约阅读时间需要 3 分钟。

经过:今天在用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();    }

乱码的情况就解决了

 

总结:

  IO这块不是很熟悉,尽量不要用原生的方法去写,而应该使用JDK封装好的方法去实现。避免出现一些意料之外的问题。

 

PS.至于上面那段代码为什么会出现乱码,暂时还未研究出来

 

转载于:https://www.cnblogs.com/xujanus/p/9842799.html

你可能感兴趣的文章
winform中datagridview选中行索引获取
查看>>
243. Shortest Word Distance
查看>>
查看被锁的数据[Z]
查看>>
2015-08-11 [今日头条]--数据抓取和处理工程师--1面
查看>>
1.RT-Thread移植(基于STM32F429IIT6)
查看>>
解决GridView中嵌入CheckBox事件无法响应的问题
查看>>
高压浮动MOS栅极驱动集成电路应用手册
查看>>
转载---数据库优化方案
查看>>
面向对象、函数式
查看>>
微信小程序
查看>>
在线学习重要的是不要停止提问
查看>>
QQ在线客服,默认到要加好友,授权也不起作用需要先开通QQ营销服务
查看>>
pro git
查看>>
UVA 11825 Hackers’ Crackdown(集合动态规划 子集枚举)
查看>>
【转载】初涉职场的40句金玉良言
查看>>
Django使用Mysql数据库已经存在的数据表方法
查看>>
Python-类进阶
查看>>
php函数的参数引用变量
查看>>
统计题量
查看>>
WCF 异步调用问题
查看>>