java文件编码和解码

package com.easy.mytest.util;

import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class T {

 public static byte[] getBytes(String filePath) {
  byte[] buffer = null;
  try {
   File file = new File(filePath);
   FileInputStream fis = new FileInputStream(file);
   ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
   byte[] b = new byte[1000];
   int n;
   while ((n = fis.read(b)) != -1) {
    bos.write(b, 0, n);
   }
   fis.close();
   bos.close();
   buffer = bos.toByteArray();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return buffer;
 }

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  String str = encode(getBytes("c:\\2014.doc"));
  byte[] bb = decode(str);
  getFile(bb,"c:","aaabbb.doc");
 }
 
   // 编码  
     public static String encode(byte[] bstr) {  
        sun.misc.BASE64Encoder encode = new sun.misc.BASE64Encoder();  
        String s = encode.encodeBuffer(bstr);  
         return s;  
     }  
  
     // 解码  
     public static byte[] decode(String str) {  
         byte[] bt = null;  
        try {  
             sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();  
             bt = decoder.decodeBuffer(str);  
         } catch (IOException e) {  
             e.printStackTrace();  
         }  
         return bt;  
     }  
 
 /**
     * 根据byte数组,生成文件
     */ 
    public static void getFile(byte[] bfile, String filePath,String fileName) { 
        BufferedOutputStream bos = null; 
        FileOutputStream fos = null; 
        File file = null; 
        try { 
            File dir = new File(filePath); 
            if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在 
                dir.mkdirs(); 
            } 
            file = new File(filePath+"\\"+fileName); 
            fos = new FileOutputStream(file); 
            bos = new BufferedOutputStream(fos); 
            bos.write(bfile); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } finally { 
            if (bos != null) { 
                try { 
                    bos.close(); 
                } catch (IOException e1) { 
                    e1.printStackTrace(); 
                } 
            } 
            if (fos != null) { 
                try { 
                    fos.close(); 
                } catch (IOException e1) { 
                    e1.printStackTrace(); 
                } 
            } 
        } 
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值