有幾個(gè)項(xiàng)目中,都需要將圖片或者數(shù)字證書的文件轉(zhuǎn)為Base64,昨天寫代碼的時(shí)候,發(fā)現(xiàn)在jdk8中本就含有關(guān)于Base64的API。
從此后不再需要其他的jar包來轉(zhuǎn)換Base64了!!!
據(jù)說是JDK8加入的。
先是將文件轉(zhuǎn)為Base64:
public String encryptToBase64(String filePath) {
if (filePath == null) {
return null;
}
try {
byte[] b = Files.readAllBytes(Paths.get(filePath));
return Base64.getEncoder().encodeToString(b);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Files、Paths類是JDK7里加入的,讀取文件不再需要調(diào)用IO包里的FileInputStream,簡單便捷。
字符串參數(shù)filePath是文件的路徑。
首先是將文件讀成二進(jìn)制碼,然后通過Base64.getEncoder().encodeToString()方法將二進(jìn)制碼轉(zhuǎn)換為Base64值。
然后是將Base64轉(zhuǎn)為文件:
public String decryptByBase64(String base64, String filePath) {
if (base64 == null && filePath == null) {
return "生成文件失敗,請給出相應(yīng)的數(shù)據(jù)。";
}
try {
Files.write(Paths.get(filePath), Base64.getDecoder().decode(base64),StandardOpenOption.CREATE);
} catch (IOException e) {
e.printStackTrace();
}
return "指定路徑下生成文件成功!";
}
字符串參數(shù)base64指的是文件的Base64值,filePath是指的文件將要保存的位置。
通過Files.write()方法輕松將文件寫入指定位置,不再調(diào)用FileOutStream方法。
第三個(gè)參數(shù)StandardOpenOption.CREATE是處理文件的方式,我設(shè)置的是不管路徑下有或沒有,都創(chuàng)建這個(gè)文件,有則覆蓋。
在StandardOpenOption類中有很多參數(shù)可調(diào)用,不再累贅。