public class Base64FileUtil {
private static String targetFilePath = "D:\\B2bic\\test.txt";
private static Logger logger = LoggerFactory.getLogger(Base64FileUtil.class);
/* public static void main(String[] args) throws Exception {
String fileStr = getFileStr("D:\\B2bic\\nc312021ca.key");
Pattern p = Pattern.compile("\\s*|\t");
Matcher m2 = p.matcher(fileStr);
fileStr = m2.replaceAll("");
System.out.println( fileStr);
System.out.println(generateFile(fileStr, targetFilePath));
System.out.println("end");
}*/
/**
* 文件轉(zhuǎn)化成base64字符串
* 將文件轉(zhuǎn)化為字節(jié)數(shù)組字符串,并對其進(jìn)行Base64編碼處理
*/
public static String getFileStr(String filePath) {
InputStream in = null;
byte[] data = null;
// 讀取文件字節(jié)數(shù)組
try {
in = new FileInputStream(filePath);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
logger.warn("文件轉(zhuǎn)化成base64字符串:{}",e);
} finally {
try {
in.close();
} catch (IOException e) {
logger.warn("文件轉(zhuǎn)化成base64字符串:{}",e);
}
}
// 對字節(jié)數(shù)組Base64編碼
BASE64Encoder encoder = new BASE64Encoder();
// 返回 Base64 編碼過的字節(jié)數(shù)組字符串
return encoder.encode(data);
}
/**
* base64字符串轉(zhuǎn)化成文件,可以是JPEG霹菊、PNG、TXT和AVI等等
*
* @param base64FileStr
* @param filePath
* @return
* @throws Exception
*/
public static boolean generateFile(String base64FileStr, String filePath) throws Exception {
// 數(shù)據(jù)為空
if (base64FileStr == null) {
System.out.println(" 不行趁窃,oops! ");
return false;
}
BASE64Decoder decoder = new BASE64Decoder();
// Base64解碼,對字節(jié)數(shù)組字符串進(jìn)行Base64解碼并生成文件
byte[] byt = decoder.decodeBuffer(base64FileStr);
for (int i = 0, len = byt.length; i < len; ++i) {
// 調(diào)整異常數(shù)據(jù)
if (byt[i] < 0) {
byt[i] += 256;
}
}
OutputStream out = null;
InputStream input = new ByteArrayInputStream(byt);
try {
// 生成指定格式的文件
out = new FileOutputStream(filePath);
byte[] buff = new byte[1024];
int len = 0;
while ((len = input.read(buff)) != -1) {
out.write(buff, 0, len);
}
} catch (IOException e) {
logger.warn("文件轉(zhuǎn)化成base64字符串:{}",e);
} finally {
out.flush();
out.close();
}
return true;
}
}
文件轉(zhuǎn)與base64字符串互轉(zhuǎn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門另假,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怕犁,你說我怎么就攤上這事边篮。” “怎么了奏甫?”我有些...
- 文/不壞的土叔 我叫張陵戈轿,是天一觀的道長。 經(jīng)常有香客問我阵子,道長思杯,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任挠进,我火速辦了婚禮色乾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘领突。我一直安慰自己暖璧,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布君旦。 她就那樣靜靜地躺著澎办,像睡著了一般嘲碱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上局蚀,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼县貌!你這毒婦竟也來了术陶?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布棍厂,位于F島的核電站,受9級特大地震影響超陆,放射性物質(zhì)發(fā)生泄漏牺弹。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一侥猬、第九天 我趴在偏房一處隱蔽的房頂上張望例驹。 院中可真熱鬧,春花似錦退唠、人聲如沸鹃锈。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽屎债。三九已至仅政,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盆驹,已是汗流浹背圆丹。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- Swift - 將圖片拓劝、文件轉(zhuǎn)成Base64編碼字符串(Base64加密、解密) 有時上傳或者發(fā)送圖片嘉裤、文件時郑临,需...
- base64是絕大多數(shù)linux系統(tǒng)自帶的程序牧抵,可以輕松快速把二進(jìn)制文件轉(zhuǎn)換成base64字符串,或者反之轉(zhuǎn)換回來...
- UIImage圖片轉(zhuǎn)成base64字符串: UIImage *_originImage = [UIImage im...
- 一些工具方法嚣崭,你可以寫成Category笨触,也可以直接復(fù)制過去當(dāng)類方法,不用苦苦的去搜索了