java实现文件和base64相互转换
更新时间:2023年11月08日 09:12:43 作者:小花皮猪
这篇文章主要为大家详细介绍了java如何实现文件和base64相互转换,文中的示例代码讲解详细,具有一定的参考价值,感兴趣的小伙伴可以跟随小编一起学习一下
1.文件转base64
声明:我用的是Hutool的Base64下的api
package cn.hutool.core.codec;
首先找一张图片

很简单,直接使用Base64的encode方法就可以拿到文件的base64码:
File file = new File("D:\\Tools\\Images\\北极熊.jpg");
String encode = Base64.encode(file);
通过断点,可以看到附件的base64就是一串很长的字符串。

2.base64转文件
拿到附件的base64之后,就可以通过该方法进行转换为附件
/**
* @description base64转附件
* @date 17:17 2023/11/7
* @param base64 附件的base64码
* @param filePath 存储路径
* @return java.io.File
**/
public static File base64ToFile(String base64, String filePath) {
File file = new File(filePath);
byte[] buffer;
try {
BASE64Decoder base64Decoder = new BASE64Decoder();
buffer = base64Decoder.decodeBuffer(base64);
FileOutputStream out = new FileOutputStream(filePath);
out.write(buffer);
out.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
return file;
}
在本地新建文件夹

调用:

查看附件,以及通过base64保存到本地了:

3.参考代码
完整代码如下,供参考:
package com.test.HutoolTest;
import cn.hutool.core.codec.Base64;
import sun.misc.BASE64Decoder;
import java.io.File;
import java.io.FileOutputStream;
public class Base64Test {
public static void main(String[] args){
// 本地附件
File file = new File("D:\\Tools\\Images\\大裤衩.jpg");
String encode = Base64.encode(file);
// base64转为附件
base64ToFile(encode, "D:\\Tools\\Images\\base64ToFile\\"+file.getName());
}
/**
* @description base64转附件
* @date 17:17 2023/11/7
* @param base64 附件的base64码
* @param filePath 存储路径
* @return java.io.File
**/
public static File base64ToFile(String base64, String filePath) {
File file = new File(filePath);
byte[] buffer;
try {
BASE64Decoder base64Decoder = new BASE64Decoder();
buffer = base64Decoder.decodeBuffer(base64);
FileOutputStream out = new FileOutputStream(filePath);
out.write(buffer);
out.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
return file;
}
}
以上就是java实现文件和base64相互转换的详细内容,更多关于java文件和base64相互转换的资料请关注脚本之家其它相关文章!
相关文章
SpringBoot读写xml上传到AWS存储服务S3的示例
这篇文章主要介绍了SpringBoot读写xml上传到S3的示例,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下2020-10-10
Java多线程场景解析volatile和AtomicLong区别原理
这篇文章主要为大家介绍了Java中volatile和AtomicLong的区别原理示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-09-09
SpringMVC实现controller中获取session的实例代码
本篇文章主要介绍了SpringMVC实现controller中获取session的实例代码,具有一定的参考价值,有兴趣的可以了解一下。2017-02-02


最新评论