字符文件和字节文件可一段程序完成

可以将文件转化为Base64格式字符串,在将字符串解码输出。
调用方法:
package test;

import java.io.FileNotFoundException;
import java.io.IOException;

import junit.framework.TestCase;

public class TestBase64Convert extends TestCase {
Base64Convert baseCov = null;
public TestBase64Convert(String s) {
super(s);
}
protected void setUp() throws Exception {
baseCov = new Base64Convert();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testIoToBase64() {
try {
String strBase64 = baseCov.ioToBase64(); //将 io 转换为 base64编码
System.out.println(">>> "+strBase64);
baseCov.base64ToIo(strBase64); //将 base64编码转换为 io 文件流,生成一幅新图片
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


转换方法:
package test;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import sun.misc.BASE64Decoder;
import com.cops.modules.util.Base64Utils;

@SuppressWarnings("restriction")
public class Base64Convert {
BASE64Decoder decoder = new BASE64Decoder();
@SuppressWarnings("static-access")
public String ioToBase64() throws IOException {
String fileName = "C:\\Users\\Lenovo\\Desktop\\qq.png"; //源文件
String strBase64 = null;
try {
FileInputStream in = new FileInputStream(fileName);
// in.available()返回文件的字节长度
// System.out.println(in.getChannel().size() +"--" + in.available());
byte[] bytes = new byte[in.available()];
// 将文件中的内容读入到数组中
in.read(bytes);

strBase64 = new BASE64Encoder().encode(bytes); //将字节流数组转换为字符串
in.close();
System.out.println(strBase64);
} catch (FileNotFoundException fe) {
fe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
return strBase64;
}


public void base64ToIo(String strBase64) throws IOException {
String string = strBase64;
String fileName = "C:/Users/Lenovo/Desktop/gril222.jpg"; //生成的新文件
ByteBuffer value;
try {
// 解码,然后将字节转换为文件
byte[] bytes = new BASE64Decoder().decodeBuffer(string); //将字符串转换为byte数组
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
byte[] buffer = new byte[in.available()];
FileOutputStream out = new FileOutputStream(fileName);
int bytesum = 0;
int byteread = 0;
while ((byteread = in.read(buffer)) != -1) {
bytesum += byteread;
out.write(buffer, 0, byteread); //文件写操作
}
//解码的另一种写法
value = Base64Utils.getFromBASE64byte(strBase64);
FileOutputStream fos = new FileOutputStream(fileName);
BufferedOutputStream bos = new BufferedOutputStream(fos);
FileChannel fc = fos.getChannel();
fc.write(value);
fos.flush();
fc.close();
fos.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值