Java读取图片/视频等文件byte数组转化String问题

有时候我们拿到一个视频文件或者一张图片文件,经过处理之后想把文件转成字符串String返回给前端,当然这里我们不会直接把String返回给前端,我们会经过处理,比如做Base64处理返回。这里我们先讨论一下如何把文件转成String的问题,请看代码:

	public static void testFileByteCode(){
        try {
        	// 输出默认的字符集
            System.out.println(Charset.defaultCharset());
            File file = new File("/Users/mac/Desktop/B612/a.jpg");
//            File file = new File("/Users/mac/Desktop/B612/ms/mp4/c.mp4");
            byte[] bytes = FileUtils.readFileToByteArray(file);

            String s1 = new String(bytes);

            // 直接输出byte数组的长度
            System.out.println(bytes.length);
            // new String(),系统默认字符集,我是mac,默认是UTF-8
            System.out.println(s1.length());
            System.out.println(s1.getBytes().length);

            String s2 = new String(bytes,Charsets.ISO_8859_1);
            // new String(),用ISO_8859_1字符集编码
            System.out.println(s2.length());
            System.out.println(s2.getBytes(Charsets.ISO_8859_1).length);

        }catch (Exception e){
            e.printStackTrace();
        }
    }

a.jpg这张图片输出的结果为:

9516
9013
16983
9516
9516

c.mp4这个视频文件输出的结果为:

7990662
7566344
14478208
7990662
7990662

通过以上结果我们发现,new String()只有在使用ISO_8859_1字符集的时候,最终生成的字符串的长度或者字节数组的长度才和我们的文件的原始字节数组的长度一样。
所以我们得出的结论就是在对图片或者视频等这类文件进行字节数组转String的时候要使用ISO_8859_1字符集。

参考:https://www.2cto.com/kf/201703/613168.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值