Base64工具类
提供base64文本互转,文件和base64互转
点击查看代码
package com.fch.demo.utiils; import cn.hutool.core.date.DateUtil; import org.springframework.stereotype.Component; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.*; import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.util.Base64; import java.util.Date; /** * @author LHW */ public class Base64Util { public static void main(String[] args) throws Exception { byte[] decodeStr = Base64Util.decryptBase64("加密串"); String jsonString = new String(decodeStr,"UTF-8"); System.out.println(jsonString); } /** * BASE64解密 */ public static byte[] decryptBase64(String key) throws Exception { return (new BASE64Decoder()).decodeBuffer(key); } /** * BASE64加密 */ public static String encryptBase64(byte[] key) throws Exception { return (new BASE64Encoder()).encodeBuffer(key); } /** * base64字符串转文件 */ public static File base64ToFile(String base64) { File file = null; String fileName = DateUtil.format(new Date(), "yyyyMMddhhmmss") + System.currentTimeMillis()+"_tmp.txt"; FileOutputStream out = null; try { // 解码,然后将字节转换为文件 file = new File(fileName); if (!file.exists()) { //noinspection ResultOfMethodCallIgnored file.createNewFile(); } // 将字符串转换为byte数组 BASE64Decoder decoder = new BASE64Decoder(); byte[] bytes = decoder.decodeBuffer(base64); ByteArrayInputStream in = new ByteArrayInputStream(bytes); byte[] buffer = new byte[1024]; out = new FileOutputStream(file); int byteread; while ((byteread = in.read(buffer)) != -1) { // 文件写操作 out.write(buffer, 0, byteread); } } catch (IOException ioe) { ioe.printStackTrace(); } finally { try { if (out != null) { out.close(); } } catch (IOException e) { e.printStackTrace(); } } return file; } /** * 文件转base64字符串 */ public static String fileToBase64(File file) { String base64 = null; InputStream fis = null; try { fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(1024); byte[] b = new byte[1024]; int n; while ((n = fis.read(b)) != -1) { bos.write(b, 0, n); } fis.close(); byte[] data = bos.toByteArray(); bos.close(); base64 = Base64.getEncoder().encodeToString(data); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fis != null) { fis.close(); } } catch (IOException e) { e.printStackTrace(); } } return base64; } /** * base64 转 文件 * * @param ofdFilePath * @param fileName */ public static void stringToOfd(String base64, String ofdFilePath, String fileName) { byte[] decodeBase64 = new byte[0]; try { decodeBase64 = new BASE64Decoder().decodeBuffer(base64); } catch (IOException e) { e.printStackTrace(); } if (decodeBase64 != null) { File directory = new File(ofdFilePath); if (!directory.exists() || !directory.isDirectory()) { directory.mkdir(); } //String filepath =ofdFilePath + fileName; File file = new File(ofdFilePath + fileName); if (file.exists()) { file.delete(); } try { FileOutputStream fos = new FileOutputStream(file); fos.write(decodeBase64, 0, decodeBase64.length); fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了