java基礎知識回顧之javaIO類---FileInputStream和FileOutputStream位元組流複製圖片
阿新 • • 發佈:2021-12-22
java基礎知識回顧之javaIO類---FileInputStream和FileOutputStream位元組流複製圖片
package com.lp.ecjtu; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * * @author Administrator * 1.用位元組讀取流物件和圖片相關聯(輸入流) * 2.用位元組寫入流物件建立一個圖片檔案。用於儲存獲取到的圖片資料(輸出流) * 3.通過迴圈讀寫,完成資料的儲存 * 4.關閉資源 * */ public class CopyPicStream { /** * @param args */ public static void main(String[] args) { FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream("d:\\1.jpg");//讀取影象資料之類的原始位元組流 fos = new FileOutputStream("2.bmp");//用於寫入諸如影象資料之類的原始位元組流 byte[] b = new byte[1024]; int len = 0; while ((len=fis.read(b)) != -1){ fos.write(b); } }catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { throw new RuntimeException("複製圖片失敗!"); }finally{ try { if(fis != null){ fis.close(); } } catch (IOException e) { e.printStackTrace(); } try { if(fos != null){ fos.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
java基礎知識回顧之javaIO類---InputStreamReader和OutputStreamWriter轉化流
InputStreamReader:是位元組流通向字元流的橋樑;
OutputStreamWriter 是字元流通向位元組流的橋樑;
package com.lp.ecjtu; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; public class SystemReadInKeyTranfer { /** * 1.源:鍵盤 * 目的:控制檯 * 2.源:鍵盤錄入:把鍵盤錄入的資料儲存到一個檔案中 * 目的:檔案 * 3.源:檔案:將檔案中的資料列印在控制檯上 * 目的:控制檯 * 流操作的基本流程: * 通過兩個明確來完成 * 1 明確源和目的 * 源:輸入流,InputStream Reader * 目的:輸出流 :outputStream Writer * 2.操作的是否為純文字 * 是:字元流 * 不是:位元組流 * 3.當體系明確後,在明確使用哪個具體的物件。 * 通過來裝置來區分: * 源裝置:記憶體,硬碟,鍵盤 * 目的:記憶體,硬碟,控制檯 * 1.將一個文字檔案中的資料儲存到另一個檔案。複製檔案。 * 源:因為是源,所以使用讀取流。InputStream Reader * 是文字檔案:這是可以選擇Reader * 明確裝置:硬碟上的一個檔案 * Reader體系中可以操作檔案的FileReader * 是否提高效率,是,加入Reader體系中的BufferedReader * FileReader fr = new FileReader("a.txt"); * BufferedReader buffr = new BufferedReader(fr); * * 目的:outputStream Writer * 是否為純文字,是!用字元流 Reader. * 裝置:硬碟上的檔案. * Writer體系中可以操作檔案的FileWriter * 是否提高效率,是,加入Writer體系中的BufferedWriter * FileWriter fr = new FileWriter("a.txt"); * BufferedWriter buffr = new BufferedWriter(fr); * * 2.將一個圖片檔案中的資料儲存到另一個檔案。複製檔案。 */ public static void main(String[] args){ BufferedReader bufferr = null; BufferedWriter bufferw = null; try { //將System.in->InputStream->Reader物件 //將Reader物件包裝成BufferedReader物件 //鍵盤錄入 /*bufferr = new BufferedReader(new InputStreamReader(System.in)); //把鍵盤錄入的資料儲存到out.txt檔案當中 bufferw= new BufferedWriter(new OutputStreamWriter(new FileOutputStream("out.txt"))); */ //將檔案中的資料與bufferedReader相關聯,InputStreamReader位元組向字元轉化的橋樑。 bufferr = new BufferedReader(new InputStreamReader(new FileInputStream("FileReaderDemo.java"))); //將檔案的資料列印到控制檯,OutputStreamWriter字元向位元組轉化的橋樑 bufferw = new BufferedWriter(new OutputStreamWriter(System.out)); String line = null; //採用迴圈的方式逐個讀取 while((line=bufferr.readLine())!=null){ //如果讀取的字串為“over”的時候,則程式退出 if(line.equals("over")){ System.exit(-1);//或者用break } //列印讀取的內容 //System.out.println(line.toUpperCase()); //使用字元輸出流進行輸出 bufferw.write(line.toUpperCase()); bufferw.newLine();//跨平臺換行,不用'\r\n' bufferw.flush(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { if(bufferr != null){ bufferr.close(); } if(bufferw != null){ bufferw.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
java基礎知識回顧之javaIO類---BufferedInputStream和BufferedOutputStream
MP3的複製過程:
package com.lp.ecjtu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * * @author Administrator * 演示MP3的複製 * BufferedOutputStream * BufferedInputStream * */ public class CopyMp3Stream { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { long startTime = System.currentTimeMillis(); copy_1(); long endTime = System.currentTimeMillis(); System.out.println("共耗費"+(endTime-startTime)+"毫秒"); } public static void copy_1() throws IOException{ //建立一個內部緩衝陣列,讀硬碟中的資料到緩衝區中,位元組流緩衝區 BufferedInputStream bufIos = new BufferedInputStream(new FileInputStream("D:\\1.mp3")); BufferedOutputStream buffos = new BufferedOutputStream(new FileOutputStream("2.mp3")); int by = 0; while((by=bufIos.read()) != -1){//讀取緩衝區的資料到輸入流中 buffos.write(by);//對輸出流進行寫操作 } buffos.close(); bufIos.close(); } }