音频和base64的转化实现
1.1.语音文件路径转化为BASE64格式的String 源码 (jdk版本-1.8)
public static String encodeBase64File(String path) throws Exception { File file = new File(path);; FileInputStream inputFile = new FileInputStream(file); byte[] buffer = new byte[(int) file.length()]; inputFile.read(buffer); inputFile.close(); return new BASE64Encoder().encode(buffer); }
1.2.将base64字符解码保存文件
/** * 将base64字符解码保存文件 * @param base64Code * @param targetPath * @throws Exception */ public static void decoderBase64File(String base64Code, String targetPath) throws Exception { byte[] buffer = new BASE64Decoder().decodeBuffer(base64Code); FileOutputStream out = new FileOutputStream(targetPath+"/1.wav"); out.write(buffer); out.close(); }
JAVA 运行环境不是1.8时 ,所报错:
java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder
原因:sun/misc/BASE64Encoder,只有在jdk1.8之前的版本存在,jdk9以后的版本,就不存在了。如果出现这样的错误,检查自己当前的jdk版本。
解决方案:
建议:使用 import org.apache.commons.codec.binary.Base64对原先sun/misc/BASE64Decoder进行替换。
2.实现方案
2.1.添加 import org.apache.commons.codec.binary.Base64包
<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.6</version> </dependency>
2.2.替换原来的BASE64Encoder()
加密部分
#加密
BASE64Encoder base64encoder = new BASE64Encoder();
return base64encoder.encode(xxx);
##替换
Base64.encodeBase64String(xxx);
解密部分
解密 new BASE64Decoder().decodeBuffer(xxx) 替换成 Base64.decodeBase64(xxx);
注意包的引入选择:
import org.apache.commons.codec.binary.Base64;