java base64流与图片的互转 针对inputStream.available()无效

来源:互联网 发布:手机淘宝模板如何制作 编辑:程序博客网 时间:2024/05/17 03:11

//获取一个本地图片文件
String separator = File.separator;
File file = new File(“F:”+separator+”test.jpg”);
//创建一个字节流
InputStream inputStream = new FileInputStream(file);
//把本地文件 转化成byte[]
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len=inputStream.read(buffer)) != -1 ){
outStream.write(buffer, 0, len);
}
byte [] data = outStream.toByteArray();//转化成byte[] 网络上都是 byte [] data = new byte[inputStream.available()];这种方法不可取
//关闭流
outStream.close();
inputStream.close();
//创建 BASE64Encoder 用来加密
BASE64Encoder base64Encoder = new BASE64Encoder();
//加密后字符串 校验是否正确,可以用网上在线工具去校验
String str = base64Encoder.encode(data);
//—————————上面是转base64字符串
//—————————下面把base64字符串转成图片写到本地
//创建解密 BASE64Decoder
BASE64Decoder base64Decoder = new BASE64Decoder();
//解密字符串转字节数组
byte [] bs = base64Decoder.decodeBuffer(str);
//创建字节写入流
OutputStream imgOut = new FileOutputStream(“F:”+separator+”testDecoder.jpg”);
imgOut.write(bs);
//关闭流
imgOut.close();