這篇不是為了系統介紹Java的輸入輸出流機制的,僅為個人筆記 作為Java小菜,每次上網搜別人的Java讀寫文件的程式參考,總覺得一頭霧水,為什麼要聲明這麼多類,規則是什麼,全然分からない,所以帶著疑問稍微瞭解了一下; Java中存在兩種輸入輸出模式的類,面向位元組(InputStream&Outpu ...
這篇不是為了系統介紹Java的輸入輸出流機制的,僅為個人筆記
作為Java小菜,每次上網搜別人的Java讀寫文件的程式參考,總覺得一頭霧水,為什麼要聲明這麼多類,規則是什麼,全然分からない,所以帶著疑問稍微瞭解了一下;
Java中存在兩種輸入輸出模式的類,面向位元組(InputStream&OutputStream)和麵向字元(Reader&Writer),另外還有一個處理文件和文件夾的類(File);
Java的輸入輸出流類採用裝飾者模式,由以上5個類衍生出許許多多其他類,這裡放一張網上搜到的圖,大家感受下
Java支持很多類型的輸入源和輸出端,但這裡不打算展開講,我只想聊聊文件的讀取和輸出。眾所周知,電腦訪問外部設備非常耗時,而訪問緩衝區則很快。因此為了提高讀寫文件的效率,除了程式與流節點之間必要的讀寫機制外,還需要增加緩衝機制。
具體例子如下:
package com.practise.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.OutputStreamWriter; import java.io.BufferedWriter; //所有以 Stream 結尾的類都是面向位元組如 FileInputStream/FileOutputStream //以 Reader/Writer 結尾的類是面向字元 //以 File 開頭的類是面向外存 //以 Buffered 開頭的類是面向緩衝區 public class ReadAndWrite { public static void main (String[] args) { String path = "D:\\Coding\\Java\\TestJava\\testdata\\"; try { File inFile = new File(path + "in.txt"); File outFile = new File(path + "out.txt"); InputStreamReader inSr = new InputStreamReader( new FileInputStream(inFile)); BufferedReader inBr = new BufferedReader(inSr); OutputStreamWriter outSw = new OutputStreamWriter( new FileOutputStream(outFile)); BufferedWriter outBw = new BufferedWriter(outSw); String line = ""; while ((line = inBr.readLine()) != null) { outBw.write(line + "\r\n"); } outBw.close(); outSw.close(); inBr.close(); inSr.close(); } catch(Exception e) { e.printStackTrace(); } } }View Code