zoukankan      html  css  js  c++  java
  • Java 二进制数据转成文件

           SqlServer数据库中,存储文件的字段的类型是image,对应的Java类型是byte[],下面的函数将演示如何把读取出来数据放入指定目录。当然,首先需要从数据库读出,然后调用该方法。 

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class FileUtils {
    
        private static Logger logger = LoggerFactory.getLogger(FileUtils.class);
        /**
         * @Title: byteToFile
         * @Description: 把二进制数据转成指定后缀名的文件,例如PDF,PNG等
         * @param contents 二进制数据
         * @param filePath 文件存放目录,包括文件名及其后缀,如D:fileike.jpg
         * @Author: Wiener
         * @Time: 2018-08-26 08:43:36
         */
        public static void byteToFile(byte[] contents, String filePath) {
            BufferedInputStream bis = null;
            FileOutputStream fos = null;
            BufferedOutputStream output = null;
            try {
                ByteArrayInputStream byteInputStream = new ByteArrayInputStream(contents);
                bis = new BufferedInputStream(byteInputStream);
                File file = new File(filePath);
                // 获取文件的父路径字符串
                File path = file.getParentFile();
                if (!path.exists()) {
                    logger.info("文件夹不存在,创建。path={}", path);
                    boolean isCreated = path.mkdirs();
                    if (!isCreated) {
                        logger.error("创建文件夹失败,path={}", path);
                    }
                }
                fos = new FileOutputStream(file);
                // 实例化OutputString 对象
                output = new BufferedOutputStream(fos);
                byte[] buffer = new byte[1024];
                int length = bis.read(buffer);
                while (length != -1) {
                    output.write(buffer, 0, length);
                    length = bis.read(buffer);
                }
                output.flush();
            } catch (Exception e) {
                logger.error("输出文件流时抛异常,filePath={}", filePath, e);
            } finally {
                try {
                    bis.close();
                    fos.close();
                    output.close();
                } catch (IOException e0) {
                    logger.error("文件处理失败,filePath={}", filePath, e0);
                }
            }
        }
    }
  • 相关阅读:
    Quartz2.0以上版本的单机和集群
    Mysql的Haproxy反向代理和负载均衡
    spring AOP原理解析
    Restful接口调用方法超详细总结
    mysql数据库主从同步
    数据备份的OSS接口
    读取properties配置文件的方法
    算法学习——堆排序(二叉树排序)
    回溯算法的实现
    冒泡排序
  • 原文地址:https://www.cnblogs.com/east7/p/9529060.html
Copyright © 2011-2022 走看看