• Java,获取文件的Base64字符串,解码Base64字符串还原文件


    在jdk1.8以前,获取文件Base64字符串需要用到第三方库,从1.8开始,Java中引入了Base64相关的类

    以下是代码示例

    获取文件的Base64编码字符串

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Base64;
    import java.util.Scanner;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    public class Base64Encoder {
    
        private static final Logger LOGGER = Logger.getLogger("Base64Encoder");
    
        public static void main(String[] args) {
            System.out.print("Enter an input filename: ");
            Scanner inputFromConsole = new Scanner(System.in);
            String filename = inputFromConsole.nextLine();
            FileOutputStream outputToFile = null;
            try (FileInputStream inputFromFile = new FileInputStream(filename)) {
                System.out.print("Enter an encoded filename: ");
                filename = inputFromConsole.nextLine();
                outputToFile = new FileOutputStream(filename);
                byte[] src = new byte[inputFromFile.available()];
                inputFromFile.read(src);
                byte[] encodedBytes = Base64.getEncoder().encode(src);
                outputToFile.write(encodedBytes);
            } catch (IOException ex) {
                LOGGER.log(Level.SEVERE, null, ex);
            } finally {
                if (outputToFile != null) {
                    try {
                        outputToFile.close();
                    } catch (IOException ex) {
                        LOGGER.log(Level.SEVERE, null, ex);
                    }
                }
            }
        }
    }

    解码Base64字符串还原文件

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import static java.lang.System.out;
    import java.util.Base64;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    public class Base64Decoder {
    
        private static final Logger LOGGER = Logger.getLogger("Base64Decoder");
    
        public static void main(String[] args) {
            if (args.length == 2) {
                try (FileInputStream encoded = new FileInputStream(args[0]); FileOutputStream decoded = new FileOutputStream(args[1])) {
                    byte[] buffer = new byte[encoded.available()];
                    encoded.read(buffer);
                    Base64.Decoder base64Decoder = Base64.getMimeDecoder();
                    decoded.write(base64Decoder.decode(buffer));
                } catch (IOException ex) {
                    LOGGER.log(Level.SEVERE, null, ex);
                }
            } else {
                out.println("usage:
    	java Base64Decoder <encoded filename> <decoded filename>");
                out.println("for example:
    	java Base64Decoder MyPic.jpg.txt MyPic.jpg");
            }
        }
    }
  • 相关阅读:
    中国移动校园WLAN客户端及使用方法
    Win7 开启upnp服务,直接在网络中设置连接路由设备
    转载:迷你云 – 搭建自己的本地多人团队Dropbox 服务
    JLINK V8固件烧录指导
    实验室网站试运营期间的信息管理
    并非如你想象的那般强大,带你重新认识3D打印
    转:技术宅逆天了!如何从按键音中听出周鸿祎的手机号码
    南大学生破译周鸿祎电话获得互联网大佬青睐
    E430 加装固态硬盘(SSD)参考
    iptables_cacti_nagios
  • 原文地址:https://www.cnblogs.com/buyishi/p/8407227.html
Copyright © 2020-2023  润新知