zoukankan      html  css  js  c++  java
  • Java 实现文件和base64字符串互转

           项目中遇到需要将图片转成base64编码的字符串的需求,但是,考虑到扩展性,写了一个可以转换任务类型文件的方法。需要引入的包:

            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.13</version>
            </dependency>

         源码如下:

    
    
    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;
     
     
    import java.io.*;
     
     
    public class Base64FileUtil {
     
     
        private static String targetFilePath = "E:\base2Img\target\test.txt";
     
     
        public static void main(String[] args) throws Exception {
            String fileStr = getFileStr("E:\base2Img\big test.txt");
            System.out.println("fileStr ===" + fileStr);
            System.out.println(generateFile(fileStr, targetFilePath));
            System.out.println("end");
        }
     
     
        /**
         * 文件转化成base64字符串
         * 将文件转化为字节数组字符串,并对其进行Base64编码处理
         */
        public static String getFileStr(String filePath) {
            InputStream in = null;
            byte[] data = null;
            // 读取文件字节数组
            try {
                in = new FileInputStream(filePath);
                data = new byte[in.available()];
                in.read(data);
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            // 对字节数组Base64编码
            BASE64Encoder encoder = new BASE64Encoder();
            // 返回 Base64 编码过的字节数组字符串
            return encoder.encode(data);
        }
     
     
        /**
         * base64字符串转化成文件,可以是JPEG、PNG、TXT和AVI等等
         *
         * @param base64FileStr
         * @param filePath
         * @return
         * @throws Exception
         */
        public static boolean generateFile(String base64FileStr, String filePath) throws Exception {
            // 数据为空
            if (base64FileStr == null) {
                System.out.println(" 不行,oops! ");
                return false;
            }
            BASE64Decoder decoder = new BASE64Decoder();
     
     
            // Base64解码,对字节数组字符串进行Base64解码并生成文件
            byte[] byt = decoder.decodeBuffer(base64FileStr);
            for (int i = 0, len = byt.length; i < len; ++i) {
                // 调整异常数据
                if (byt[i] < 0) {
                    byt[i] += 256;
                }
            }
            OutputStream out = null;
            InputStream input = new ByteArrayInputStream(byt);
            try {
                // 生成指定格式的文件
                out = new FileOutputStream(filePath);
                byte[] buff = new byte[1024];
                int len = 0;
                while ((len = input.read(buff)) != -1) {
                    out.write(buff, 0, len);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                out.flush();
                out.close();
            }
            return true;
        }
     
    }
  • 相关阅读:
    shell脚本学习
    docker容器的安装与使用
    admin源码分析
    ajax提交文件,django测试脚本环境书写,froms组件,钩子函数
    javascript语法 1.运算符 2. 流程控制 3. 函数 4. 四种变量 5. 数据类型的运用 6. js页面交互
    from提交数据,高级选择器,伪类选择器,前端样式等
    前端HTML介绍,标签介绍,基础选择器,CSS引入方法
    数据库知识总结
    day46
    day45
  • 原文地址:https://www.cnblogs.com/east7/p/12193773.html
Copyright © 2011-2022 走看看