// sun.misc.BASE64Encoder sun.misc.BASE64Decoder :
// 》 》Java Build Path》jre System Library 》access rules》resolution accessible, ** !
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class TestPDFBinary {
/*BASE64Encoder BASE64Decoder sun , java api , ,
* , , apache API*/
static BASE64Encoder encoder = new sun.misc.BASE64Encoder();
static BASE64Decoder decoder = new sun.misc.BASE64Decoder();
public static void main(String[] args) {
// PDF base64
String base64String = getPDFBinary(new File("/home/amarsoft/AFm.pdf"));
System.out.println(base64String);
// base64 PDF
base64StringToPDF(base64String);
}
/**
* PDF base64
* 1. BufferedInputStream FileInputStream File ;
* 2. ByteArrayOutputStream BufferedOutputStream
* 3. , BASE64Encoder
* */
static String getPDFBinary(File file) {
FileInputStream fin =null;
BufferedInputStream bin =null;
ByteArrayOutputStream baos = null;
BufferedOutputStream bout =null;
try {
//
fin = new FileInputStream(file);
// ( )
bin = new BufferedInputStream(fin);
// byte ,
baos = new ByteArrayOutputStream();
// ,
bout = new BufferedOutputStream(baos);
byte[] buffer = new byte[1024];
int len = bin.read(buffer);
while(len != -1){
bout.write(buffer, 0, len);
len = bin.read(buffer);
}
// , ,
bout.flush();
byte[] bytes = baos.toByteArray();
//sun API
return encoder.encodeBuffer(bytes).trim();
//apache API
//return Base64.encodeBase64String(bytes);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
fin.close();
bin.close();
// ByteArrayOutputStream 。 , IOException
//baos.close();
bout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* base64 PDF
* @param base64sString
* 1. BASE64Decoder
* 2. ByteArrayInputStream ;
* 3. BufferedInputStream ;
* 4. BufferedOutputStream FileOutputSteam
*/
static void base64StringToPDF(String base64sString){
BufferedInputStream bin = null;
FileOutputStream fout = null;
BufferedOutputStream bout = null;
try {
// base64
byte[] bytes = decoder.decodeBuffer(base64sString);
//apache API
//byte[] bytes = Base64.decodeBase64(base64sString);
// bytes ByteArrayInputStream
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
//
bin = new BufferedInputStream(bais);
//
File file = new File("/home/amarsoft/test.pdf");
//
fout = new FileOutputStream(file);
//
bout = new BufferedOutputStream(fout);
byte[] buffers = new byte[1024];
int len = bin.read(buffers);
while(len != -1){
bout.write(buffers, 0, len);
len = bin.read(buffers);
}
// , ,
bout.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
bin.close();
fout.close();
bout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}