一.IO流的概念
在程序中所有的數據都是以流的方式進行傳輸或保存的,程序需要數據的時候要使用輸入流讀取數據,而當程序需要將一些數據保存起來的時候,就要使用輸出流完成;
二.常用IO流結構
IO流
│—————字節流
│ ├-InputStream (字節輸入流)
│ │ ├-FileInputStream
│ │ └-BufferedInputStream
│ └-OutputStream (字節輸出流)
│ ├-FileInputStream
│ └-BufferedOutputStream
│
└—————字符流
├-Reader(字符輸入流)
│ ├-BufferedReader
│ └-InPutStreamReader
└-Writer (字符輸出流)
├-BufferedWriter
└-InPutStreamWriter
三.字節流與字符流區別
字節流與字符流的區別就是讀寫的時候一個是按字節讀寫,一個是按字符。
字符流的底層就是字節流。而字符流主要是讀取文本文件內容的,可以一個字符一個字符的讀取,也可以一行一行的讀取文本文件內容。而字節流讀取單位爲byte.byte作爲計算機存儲最基本單位,可以用字節流來讀取很多其他格式的文件,比如圖片視頻等等。
四.字節流
1.字節輸入流 (InputStream )
1)FileInputStream: 文件字節輸入流:一切文件在系統中都是以字節的形式保存的,無論你是文檔文件、視頻文件、音頻文件…,需要讀取這些文件都可以用FileInputStream去讀取其保存在存儲介質(磁盤等)上的字節序列
1.創建FileInputStream對象,並指定文件
2.讀
3.關閉資源
2)BufferedInputStream: 字節緩衝輸入流:在讀取數據量大的文件時,讀取的速度會很慢,很影響我們程序的效率,這時候在Java中提供了一套緩衝流,提高讀取文件的效率。
1.創建BufferedInputStream對象,傳入一個FileInputStream對象,並指定文件
2.讀
3.關閉資源
五.字符流
1.字符輸入流 (Reader)
1)InPutStreamReader:字節轉字符流:這個類是從字節流到字符流的橋接器:它使用指定的字符集讀取字節並將它們解碼爲字符。
1.創建InPutStreamReader對象,傳入一個FileInputStream對象,並指定文件
2.讀
3.關閉資源
2)BufferedReader:字符緩衝流:從字符輸入流中讀取文本,緩衝各個字符,從而實現字符、數組和行的高效讀取。 可以指定緩衝區的大小,或者課使用默認的大小。
1.創建BufferedReader對象,傳入一個InPutStreamReader對象,並指定文件
2.讀
3.關閉資源