一行代码实现将字节流写入磁盘生成文件

前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i
今天我们来使用一个极其简单的操作文件工具类,使用apache当中commons下的文件工具类FileUtils,使用它能大大的简化我们对文件的操作。

1、导入FileUtils的依赖

<!-- FileUtils依赖-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

2、引入io包使用FileUtils类生成一张gif图片到磁盘中

//获取网上资源图片,下载到本地磁盘
    @RequestMapping("/dowload")
    public void dowload()throws Exception{
        InputStream in = new URL("http://www.baidu.com/img/baidu_logo.gif").openStream();
        byte [] gif = IOUtils.toByteArray(in); //将文件转换字节数组
        String outpath = "E:\\test.gif";
        FileUtils.writeByteArrayToFile(new File(outpath),gif);//导出路径文件格式,字节数组
    }
结果:可以看出E盘根目录下生成了test.gif这么一个文件,测试通过!!!

结果

3、使用FileUtils文件工具类生成MP3格式音频文件

说明:此处音频字节数组是从redis中获取,请关注上篇文章:将音频文件转二进制分包存储到Redis(奇淫技巧操作)

/**
     * 从redis中分包取值进行byte[]数组合并解析音频
     */
    @RequestMapping("/getkeyAudio")
    public void getKey(HttpServletResponse response) throws Exception{
        OutputStream os = response.getOutputStream();
        List list =redisTemplate.opsForList().range("Audio", 0, -1); //通过key获取指定区间的值,List方式存储用List集合去接收

        //合并音频字节数组
        List<byte[]> blist = list;
        int lengthTotal = 0;
        for (byte[] item : blist) {
            lengthTotal += item.length;
        }
        byte[] totalByte = new byte[lengthTotal];
        int begin = 0;
        for (byte[] item : blist) {
            //System.arraycopy(原数组, 原数组起始位置, 目标数组, 目标数组起始位置, 复制长度);
            System.arraycopy(item, 0, totalByte, begin, item.length);
            begin += item.length;
        }

        String outfile = "E:\\Audio.mp3";
        FileUtils.writeByteArrayToFile(new File(outfile),totalByte);//导出路径文件格式,字节数组

    }
结果:再次回到E盘,效果和我预期的一致生成了MP3格式的音频文件(可以正常播放的哈!)

结果

个人总结:

我是南国以南i记录点滴每天成长一点点,学习是永无止境的!转载请附原文链接!!!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值