java實(shí)現(xiàn)文件和base64相互轉(zhuǎn)換
1.文件轉(zhuǎn)base64
聲明:我用的是Hutool的Base64下的api
package cn.hutool.core.codec;
首先找一張圖片

很簡(jiǎn)單,直接使用Base64的encode方法就可以拿到文件的base64碼:
File file = new File("D:\\Tools\\Images\\北極熊.jpg");
String encode = Base64.encode(file);
通過(guò)斷點(diǎn),可以看到附件的base64就是一串很長(zhǎng)的字符串。

2.base64轉(zhuǎn)文件
拿到附件的base64之后,就可以通過(guò)該方法進(jìn)行轉(zhuǎn)換為附件
/**
* @description base64轉(zhuǎn)附件
* @date 17:17 2023/11/7
* @param base64 附件的base64碼
* @param filePath 存儲(chǔ)路徑
* @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;
}
在本地新建文件夾

調(diào)用:

查看附件,以及通過(guò)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轉(zhuǎn)為附件
base64ToFile(encode, "D:\\Tools\\Images\\base64ToFile\\"+file.getName());
}
/**
* @description base64轉(zhuǎn)附件
* @date 17:17 2023/11/7
* @param base64 附件的base64碼
* @param filePath 存儲(chǔ)路徑
* @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實(shí)現(xiàn)文件和base64相互轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于java文件和base64相互轉(zhuǎn)換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot讀寫(xiě)xml上傳到AWS存儲(chǔ)服務(wù)S3的示例
這篇文章主要介紹了SpringBoot讀寫(xiě)xml上傳到S3的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-10-10
Java使用JDBC驅(qū)動(dòng)連接MySQL數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了Java使用JDBC驅(qū)動(dòng)連接MySQL數(shù)據(jù)庫(kù)的具體步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
基于紅黑樹(shù)插入操作原理及java實(shí)現(xiàn)方法(分享)
下面小編就為大家分享一篇基于紅黑樹(shù)插入操作原理及java實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
Java多線程場(chǎng)景解析volatile和AtomicLong區(qū)別原理
這篇文章主要為大家介紹了Java中volatile和AtomicLong的區(qū)別原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
關(guān)于idea一直卡在build不動(dòng)的解決方案
這篇文章主要介紹了idea一直卡在build不動(dòng)的解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
Java中ArrayList與順序表的定義與實(shí)現(xiàn)方法
ArrayList是一個(gè)實(shí)現(xiàn)List接口的類(lèi),底層是動(dòng)態(tài)類(lèi)型順序表,本質(zhì)也就是數(shù)組,動(dòng)態(tài)主要體現(xiàn)在它的擴(kuò)容機(jī)制,下面這篇文章主要給大家介紹了關(guān)于Java中ArrayList與順序表的定義與實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2022-07-07
SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼
本篇文章主要介紹了SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-02-02
在SpringBoot中使用MongoDB完成數(shù)據(jù)存儲(chǔ)
本文主要介紹了在SpringBoot中如惡化使用MongoDB完成數(shù)據(jù)存儲(chǔ),接下來(lái)這篇我們將圍繞MongoDB進(jìn)行,MongoDB是一個(gè)開(kāi)源的,面向文檔的NoSQL數(shù)據(jù)庫(kù)管理系統(tǒng),使用類(lèi)似JSON的BSON(二進(jìn)制JSON)格式來(lái)存儲(chǔ)數(shù)據(jù),具有靈活的數(shù)據(jù)模型和強(qiáng)大的查詢功能,需要的朋友可以參考下2023-11-11

