綜合對接流(圖片到位元組陣列,位元組陣列到檔案)
阿新 • • 發佈:2018-12-18
跟檔案複製類似,把圖片檔案讀進去,以位元組陣列輸出來,在把位元組陣列都進寫出到檔案,完成圖片複製
package com.jianshun; 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.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; import java.io.Writer; /** * 1:圖片讀取到位元組陣列 * 2:位元組陣列寫出到檔案 */ public class IOTest09 { public static void main(String[] args) { //圖片轉成位元組陣列 byte[] datas = fileToByteArray("p.jpg"); System.out.println(datas.length); byteArrayToFile(datas,"p-byte.jpg"); } /** *1:圖片讀取到位元組陣列 *1):圖片到程式 FileInputStream *2):程式到位元組陣列 ByteArrayOutputStream */ public static byte[] fileToByteArray(String filePath){ //1:建立源與目的地 File src = new File(filePath); //2:選擇流 InputStream is = null; ByteArrayOutputStream baos = null; try { is = new FileInputStream(src); baos = new ByteArrayOutputStream(); //3:操作(分段讀取) byte[] flush = new byte[1024*10];//緩衝容器 int len = -1;//接受長度 while((len = is.read(flush))!=-1){ baos.write(flush, 0, len);//寫出到位元組陣列中 } baos.flush(); return baos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ //4:釋放資源 if(is != null){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } /** *2:位元組陣列寫出到圖片 *1):位元組陣列到程式 ByteArrayInputStream *2):程式到檔案 */ public static void byteArrayToFile(byte[] src,String pathString){ //1,建立源 File dest = new File(pathString); //2,選擇流 InputStream in = null; OutputStream out = null; try { in = new ByteArrayInputStream(src); out = new FileOutputStream(dest); //3,操作(分段讀取) byte[] flush = new byte[5];//緩衝容器 int len =-1; while((len = in.read(flush)) != -1){ out.write(flush, 0, len); } out.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ //4:釋放資源 if(null != out){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } }