Java中文件与字节数组转换

package test.test;

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

public class FileBytesConvert {

 /**
  * @param args
  */
 public static void main(String[] args) {
  String fileName = "D:\\windows\\Win7_027.jpg";
//  String fileName = "D:\\ssotest.sql";
  File file = new File(fileName);
  byte[] ret = getBytesFromFile(file);
 /* for (byte b : ret) {
   System.out.print(b + " ");
  }*/
  
  getFileFromBytes(ret,"D:\\windows\\file01.jpg");
  
 }

 /**
  * 文件转化为字节数组
  *
  * @param file
  * @return
  */
 public static byte[] getBytesFromFile(File file) {
  byte[] ret = null;
  try {
   if (file == null) {
    // log.error("helper:the file is null!");
    return null;
   }
   FileInputStream in = new FileInputStream(file);
   ByteArrayOutputStream out = new ByteArrayOutputStream(4096);
   byte[] b = new byte[4096];
   int n;
   while ((n = in.read(b)) != -1) {
    out.write(b, 0, n);
   }
   in.close();
   out.close();
   ret = out.toByteArray();
  } catch (IOException e) {
   // log.error("helper:get bytes from file process error!");
   e.printStackTrace();
  }
  return ret;
 }

 /**
  * 把字节数组保存为一个文件
  *
  * @param b
  * @param outputFile
  * @return
  */
 public static File getFileFromBytes(byte[] b, String outputFile) {
  File ret = null;
  BufferedOutputStream stream = null;
  try {
   ret = new File(outputFile);
   FileOutputStream fstream = new FileOutputStream(ret);
   stream = new BufferedOutputStream(fstream);
   stream.write(b);
  } catch (Exception e) {
   // log.error("helper:get file from byte process error!");
   e.printStackTrace();
  } finally {
   if (stream != null) {
    try {
     stream.close();
    } catch (IOException e) {
     // log.error("helper:get file from byte process error!");
     e.printStackTrace();
    }
   }
  }
  return ret;
 }

}

你可能感兴趣的:(JavaSE,java,文件,字节数组)