標籤:緩衝 方式 尾碼名 port 指定 redo import 圖片 高效
1:遞迴(理解) (1)方法定義中調用方法本身的現象 舉例:老和尚給小和尚講故事,我們學編程 (2)遞迴的注意事項; A:要有出口,否則就是死遞迴 B:次數不能過多,否則記憶體溢出 C:構造方法不能遞迴使用 (3)遞迴的案例: A:遞迴求階乘 B:兔子問題 C:遞迴輸出指定目錄下所有指定尾碼名的檔案絕對路徑 D:遞迴刪除帶內容的目錄(小心使用)2:IO流(掌握) (1)IO用於在裝置間進行資料轉送的操作 (2)分類: A:流向 輸入資料流 讀取資料 輸出資料流 寫出資料 B:資料類型 位元組流 位元組輸入資料流 位元組輸出資料流 字元流 字元輸入資料流 字元輸出資料流 注意: a:如果我們沒有明確說明按照什麼分,預設按照資料類型分。 b:除非檔案用windows內建的記事本開啟我們能夠讀懂,才採用字元流,否則建議使用位元組流。 (3)FileOutputStream寫出資料 A:操作步驟 a:建立位元組輸出資料流對象 b:調用write()方法 c:釋放資源 B:代碼體現: FileOutputStream fos = new FileOutputStream("fos.txt"); fos.write("hello".getBytes()); fos.close(); C:要注意的問題? a:建立位元組輸出資料流對象做了幾件事情? b:為什麼要close()? c:如何?資料的換行? d:如何?資料的追加寫入? (4)FileInputStream讀取資料 A:操作步驟 a:建立位元組輸入資料流對象 b:調用read()方法 c:釋放資源 B:代碼體現: FileInputStream fis = new FileInputStream("fos.txt"); //方式1 int by = 0; while((by=fis.read())!=-1) { System.out.print((char)by); } //方式2 byte[] bys = new byte[1024]; int len = 0; while((len=fis.read(bys))!=-1) { System.out.print(new String(bys,0,len)); } fis.close(); (5)案例:2種實現 A:複製文字檔 B:複製圖片 C:複製視頻 (6)位元組緩衝區流 A:BufferedOutputStream B:BufferedInputStream (7)案例:4種實現 A:複製文字檔 B:複製圖片 C:複製視頻 3:自學字元流 IO流分類 位元組流: InputStream FileInputStream BufferedInputStream OutputStream FileOutputStream BufferedOutputStream 字元流: Reader FileReader BufferedReader Writer FileWriter BufferedWriterimport java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/* * 基本位元組流一次讀寫一個位元組:共耗時:137049 * 基本位元組流一次讀寫一個數組:共耗時:243毫秒 * 高效位元組流一次讀寫一個位元組:共耗時:1219毫秒 * 高效位元組流一次讀寫一個數組:共耗時:80毫秒 */public class SeedTest2 { public static void main(String[] args) throws IOException { long start = System.currentTimeMillis(); //method1(); //method2(); //method3(); method4(); long end = System.currentTimeMillis(); System.out.println("共耗時:"+(end-start)+"毫秒"); } private static void method4() throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream("G:\\[胡彥斌]還魂門(電視劇《老九門》主題曲)_bd.mp4")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("G:\\demo\\胡彥斌2.mp4")); System.out.println("高效位元組流一次讀寫一個數組"); byte[] bys = new byte[1024]; int len = 0; while((len=bis.read(bys))!=-1){ bos.write(bys, 0, len); } bos.close(); bis.close(); } private static void method3() throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream("G:\\[胡彥斌]還魂門(電視劇《老九門》主題曲)_bd.mp4")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("G:\\demo\\胡彥斌1.mp4")); System.out.println("高效位元組流一次讀寫一個位元組"); int by=0; while((by=bis.read())!=-1){ bos.write(by); } bos.close(); bis.close(); } private static void method2() throws IOException { FileInputStream fis = new FileInputStream("G:\\[胡彥斌]還魂門(電視劇《老九門》主題曲)_bd.mp4"); FileOutputStream fos = new FileOutputStream("G:\\demo\\還魂門2.mp4"); System.out.println("基本位元組流一次讀寫一個數組"); byte[] bys = new byte[1024]; int len=0; while((len=fis.read(bys))!=-1){ fos.write(bys, 0, len); } fos.close(); fis.close(); } private static void method1() throws IOException { FileInputStream fis = new FileInputStream("G:\\[胡彥斌]還魂門(電視劇《老九門》主題曲)_bd.mp4"); FileOutputStream fos = new FileOutputStream("G:\\demo\\還魂門1.mp4"); System.out.println("基本位元組流一次讀寫一個位元組"); int by = 0; while((by=fis.read())!=-1){ fos.write(by); } fos.close(); fis.close(); }}
Java學習第二十天