文件与Base64之间的转换

import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Base64;

/** * Base64转换工具类 */ public class Base64Utils {

private static Base64Utils utils = null;

private Base64Utils(){

}

public static Base64Utils getInstance(){ if(utils == null){ synchronized (Base64Utils.class) { if(utils == null ){ utils = new Base64Utils(); } } } return utils; } /** * 返回文件大小 * @param inFile * @return */ public int getFileSize(File inFile){ InputStream in = null;

try { in = new FileInputStream(inFile); //文件长度 int len = in.available(); return len; }catch (Exception e) { // TODO: handle exception }finally{ try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return -1; }

/** * 将文件转化为base64 * @param inFile * @return */ public String file2Base64(File inFile){

//将文件转化为字节码 byte [] bytes = copyFile2Byte(inFile); if(bytes == null){ return null; }

//base64,将字节码转化为base64的字符串 String result = Base64.getEncoder().encodeToString(bytes); return result; }

/** * 将文件转化为字节码 * @param inFile * @return */ private byte [] copyFile2Byte(File inFile){ InputStream in = null;

try { in = new FileInputStream(inFile); //文件长度 int len = in.available();

//定义数组 byte [] bytes = new byte[len];

//读取到数组里面 in.read(bytes); return bytes; } catch (Exception e) { e.printStackTrace(); return null; }finally{ try { if(in != null){ in.close(); } } catch (Exception e) { e.printStackTrace(); } } } /** * 将字符串转化为文件 * @param strBase64 base64 编码的文件 * @param outFile 输出的目标文件地址 */ public boolean base64ToFile(String strBase64,File outFile){ try { // 解码,然后将字节转换为文件 byte[] bytes = Base64.getDecoder().decode(strBase64); // 将字符串转换为byte数组 return copyByte2File(bytes,outFile); } catch (Exception ioe) { ioe.printStackTrace(); return false; } } /** * 将字节码转化为文件 * @param bytes * @param file */ private boolean copyByte2File(byte [] bytes,File file){ FileOutputStream out = null; try { //转化为输入流 ByteArrayInputStream in = new ByteArrayInputStream(bytes);

//写出文件 byte[] buffer = new byte[1024];

out = new FileOutputStream(file);

//写文件 int len = 0; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); // 文件写操作 } return true; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { if(out != null){ out.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return false; } /** * 将base64转换为输入流 * @param base64 * @return */ public ByteArrayInputStream base64ToInputStream(String base64){ try { // 将字符串转换为byte数组 byte[] bytes = Base64.getDecoder().decode(base64); ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); return inputStream; } catch (Exception e) { e.printStackTrace(); } return null; } }

/** * 当然,如果你只是想要测试的话,可以访问 在线图片转换Base64 http://imgbase64.duoshitong.com/ * */

但是这一串是不需要的 data:image/jpeg;base64,

经验分享 程序员 微信小程序 职场和发展