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

字符文件和字节文件可一段程序完成可以将文件转化为Base64格式字符串,在将字符串解码输出。调用方法:packag

字符文件和字节文件可一段程序完成
可以将文件转化为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();
        }
    }
}