• 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;
        }
     
    }
  • 相关阅读:
    Nginx源码编译安装与负载均衡配置实践
    jquery_file_upload in Rails(ajax实现多张图片上传)
    Nokogiri相关网站
    rails中 url和path的区别
    Unique Paths
    Kinect for windows的脸部识别
    .Net给图片添加水印效果
    大型高性能ASP.NET系统架构设计
    如何来提高网站的访问速度,其中包括服务器的配置建议,asp.NET代码的编写及前端页面的优化等等
    URL中#号(井号)的作用
  • 原文地址:https://www.cnblogs.com/east7/p/12193773.html
Copyright © 2020-2023  润新知