1. 程式人生 > 其它 >java基礎知識回顧之javaIO類總結

java基礎知識回顧之javaIO類總結

java IO體系圖

IO流的操作規律總結:

1,明確體系:
資料來源:InputStream ,Reader
資料匯:OutputStream,Writer

2,明確資料:因為資料分兩種:位元組,字元。
資料來源:是否是純文字資料呢?
是:Reader 字元輸入流
否:InputStream 位元組輸入流

資料匯:是否是純文字資料呢?
是:Writer 字元輸出流
否:OutputStream 位元組輸出流、

到這裡就可以明確具體要使用哪一個體系了,剩下的就是要明確使用這個體系中的哪個物件。

3.明確裝置:

資料來源:
鍵盤:System.in 鍵盤輸入
硬碟:FileXXX 硬碟上面
記憶體:陣列。
網路:socket socket.getInputStream();

資料匯:
控制檯:System.out
硬碟:FileXXX
記憶體:陣列
網路:socket socket.getOutputStream();

4,明確額外功能:
1,需要轉換?是,使用轉換流。InputStreamReader OutputStreamWriter

2,需要高效?是,使用緩衝區。Buffered
3,需要其他?

-------------------------------------------------------------------------------------------------------------------------------------

1,複製一個文字檔案。

  1,明確體系:
    源:InputStream ,Reader
    目的:OutputStream ,Writer
  2,明確資料:
    源:是純文字嗎?是 Reader
    目的;是純文字嗎?是 Writer
  3,明確裝置:
    源:硬碟上的一個檔案。 FileReader
    目的:硬碟上的一個檔案。FileWriter
    FileReader fr = new FileReader("a.txt");
    FileWriter fw = new FileWriter("b.txt");
  4,需要額外功能嗎?
    需要,高效,使用buffer
    BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
    BufferedWriter bufw = new BufferedWriter(new FileWriter("b.txt"));

2,讀取鍵盤錄入,將資料儲存到一個檔案中。
  1,明確體系:
  源:InputStream ,Reader
  目的:OutputStream ,Writer
  2,明確資料:
  源:是純文字嗎?是 Reader
  目的;是純文字嗎?是 Writer
  3,明確裝置:
  源:鍵盤,System.in
  目的:硬碟,FileWriter
  InputStream in = System.in;
  FileWriter fw = new FileWriter("a.txt");
4,需要額外功能嗎?
  需要,因為源明確的體系時Reader。可是源的裝置是System.in。
  所以為了方便於操作文字資料,將源轉成字元流。需要轉換流。InputStreamReader
  InputStreamReader isr = new InputStreamReader(System.in);
  FileWriter fw = new FileWriter("a.txt");
  需要高效不?需要。Buffer
  BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  BufferedWriter bufw = new BufferedWriter(new FileWriter("a.txt"));

3,讀取一個文字檔案,將資料展現在控制檯上。
  1,明確體系:
  源:InputStream ,Reader
  目的:OutputStream ,Writer
  2,明確資料:
  源:是純文字嗎?是 Reader
  目的;是純文字嗎?是 Writer
  3,明確裝置:
  源:硬碟檔案,FileReader。
  目的:控制檯:System.out。
  FileReader fr = new FileReader("a.txt");
  OutputStream out = System.out;
  4,需要額外功能?
  因為源是文字資料,確定是Writer體系。所以為了方便操作字元資料,
  需要使用字元流,但是目的又是一個位元組輸出流。
  需要一個轉換流,OutputStreamWriter:字元向位元組轉化
  FileReader fr = new FileReader("a.txt");
  OutputStreamWriter osw = new OutputStreamWriter(System.out);

  需要高效嗎?需要。
  BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
  BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

4,讀取鍵盤錄入,將資料展現在控制檯上。
  1,明確體系:
  源:InputStream ,Reader
  目的:OutputStream ,Writer
  2,明確資料:
  源:是純文字嗎?是 Reader
  目的;是純文字嗎?是 Writer
  3,明確裝置:
  源:鍵盤:System.in
  目的:控制檯:System.out
  InputStream in = System.in;
  OutputStream out = System.out;
  4,需要額外功能嗎?
  因為處理的資料是文字資料,同時確定是字元流體系。
  為方便操作字元資料的可以將源和目的都轉成字元流。使用轉換流。
  為了提高效率,使用Buffer
  BufferedReader bufr =new BufferedReader(new InputStreamReader(Systme.in));
  BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

5,讀取一個文字檔案,將檔案按照指定的編碼表UTF-8進行儲存,儲存到另一個檔案中。
  1,明確體系:
  源:InputStream ,Reader
  目的:OutputStream ,Writer
  2,明確資料:
  源:是純文字嗎?是 Reader
  目的;是純文字嗎?是 Writer
  3,明確裝置:
  源:硬碟:FileReader.
  目的:硬碟:FileWriter
  FileReader fr = new FileReader("a.txt");
  FileWriter fw = new FileWriter("b.txt");
  4,額外功能:
  注意:目的中雖然是一個檔案,但是需要指定編碼表。
  而直接操作文字檔案的FileWriter本身內建的是本地預設碼錶。無法明確具體指定碼錶。
  這時就需要轉換功能。OutputStreamWriter,而這個轉換流需要接受一個位元組輸出流,而且
  對應的目的是一個檔案。這時就使用位元組輸出流中的操作檔案的流物件。FileOutputStream.
  FileReader fr = new FileReader("a.txt");
  OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt"),"UTF-8");

  需要高效嗎?
  BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
  BufferedWriter bufw =
  new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b.txt"),"UTF-8"));

目前為止,10個流物件重點掌握。
  字元流:
  FileReader
  FileWriter

  BufferedReader
  BufferedWriter

  InputStreamReader
  OutputStreamWrier
  位元組流:

  FileInputStream
  FileOutputStream

  BufferedInputStream
  BufferedOutputStream