天天看點

Java基礎總結-IO流

流是什麼?

流是程式與外部的資料傳輸通道。輸入流可以看作一個輸入通道,輸出流可以看作一個輸出通道。

位元組流,字元流

按處理資料機關不同分為位元組流、字元流

位元組流:每次讀取(寫出)一個位元組

字元流:每次讀取(寫出)兩個位元組

字元流的由來:

字元流是由Java虛拟機把位元組轉換而來的,過程耗時,不知道編碼類型會出現亂碼.為了更加友善讀寫字元類型的檔案,提供了一個直接操作字元的接口.

(我的了解是,字元流就是在位元組流的基礎上多了轉碼的操作)

字元流與位元組流轉換 (字元流輸入輸出原理)

文本檔案在硬碟中是以位元組流的形式存儲,通過InputStreamReader讀取位元組轉化為字元流給程式處理,程式處理的字元流通過OutputStreamWriter轉換為位元組流儲存。

InputStreamReader 是位元組到字元的橋梁,完成byte流解析為char流,按照編碼解析

OutputStreamWriter 是字元到位元組的橋梁,提供char流到byte流,按照編碼處理

位元組流,字元流的差別:

  1. 使用範圍: 位元組流可以對所有類型的資料輸入輸出,字元流隻能輸入輸出字元類型的資料
  2. 操作單元: 位元組流一次操作一個位元組,字元流一次操作兩個位元組
  3. 緩存: 節流沒有緩沖區,是直接輸出的,而字元流是輸出到緩沖區的。是以在輸出時,位元組流不調用colse()方法時,資訊已經輸出了,而字元流隻有在調用close()方法關閉緩沖區時,資訊才輸出。要想字元流在未關閉時輸出資訊,則需要手動調用flush()方法。

四種最基本流類型:

位元組流: InputStream,OutputStream

字元流: Reader,Writer

輸入流,輸出流

按照流的方向分為:輸入流,輸出流

輸入流示例:

//擷取⽤鍵盤輸⼊資料的常⽤方法
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String s = input.readLine();
           

輸出流示例:

未完待續…

參考:

Java-IO流

Java:位元組流和字元流(輸入流和輸出流)