package com.yq1012.test; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Base64; public class TestFile { public static void main(String[] args) throws IOException { // http://lavasoft.blog.51cto.com/62575/131928/ byte[] sfile = File2byte("D:\\7.jpg"); Base64 base64 = new Base64(); byte[] a = base64.encode(sfile); try { String str = new String(a, "utf-8"); System.out.println("字符串长度:" + str.length()); byte[] xml = str.getBytes("UTF-8"); byte[] b = base64.decode(xml); byte2File(b, "c:\\", "7.jpg"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } public static byte[] getBytesFromFile(File file) throws IOException { InputStream is = new FileInputStream(file); // 获取文件大小 long length = file.length(); if (length > Integer.MAX_VALUE) { // 文件太大,无法读取 throw new IOException("File is to large " + file.getName()); } // 创建一个数据来保存文件数据 byte[] bytes = new byte[(int) length]; // 读取数据到byte数组中 int offset = 0; int numRead = 0; while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) { offset += numRead; } // 确保所有数据均被读取 if (offset < bytes.length) { throw new IOException("Could not completely read file " + file.getName()); } // Close the input stream and return bytes is.close(); return bytes; } public static byte[] File2byte(String filePath) { byte[] buffer = null; try { File file = new File(filePath); FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] b = new byte[1024]; 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 byte2File(byte[] buf, 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 + File.separator + fileName); fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); bos.write(buf); } catch (Exception e) { e.printStackTrace(); } finally { if (bos != null) { try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } } }