1.JAVA流式輸入/輸出原理

流是用來讀寫數(shù)據(jù)的,Java有一個類叫File,它封裝的是文件的文件名,只是內(nèi)存里面的一個對象,真正的文件是在硬盤上的一塊空間,在這個文件里面存放著各種各樣的數(shù)據(jù),我們想讀文件里面的數(shù)據(jù)怎么辦呢?是通過一個流的方式來讀,咱們要想從程序讀數(shù)據(jù),對于計算機來說,無論讀什么類型的數(shù)據(jù)都是以010101101010這樣的形式讀取的。怎么把文件里面的數(shù)據(jù)讀出來呢?你可以把文件想象成一個小桶,文件就是一個桶,文件里面的數(shù)據(jù)就相當于是這個桶里面的水,那么我們怎么從這個桶里面取水呢,也就是怎么從這個文件讀取數(shù)據(jù)呢。
2.輸入輸出流分類

java.io.* 包里面定義了所有的流,所以一說流指的就是IO包里面的
什么叫輸入流?什么叫輸出流?用一根管道一端插進文件里程序里面,然后開始讀數(shù)據(jù),那么這是輸入還是輸出呢?如果站在文件的角度上,這叫輸出,如果站在程序的角度上,這叫輸入。
記住,以后說輸入流和輸出流都是站在程序的角度上來說。
3.節(jié)點流和處理流

你要是對原始的流不滿意,你可以在這根管道外面再套其它的管道,套在其它管道之上的流叫處理流。為什么需要處理流呢?這就跟水流里面有雜質(zhì),你要過濾它,你可以再套一層管道過濾這些雜質(zhì)一樣。
3.1 節(jié)點流類型

節(jié)點流就是一根管道直接插到數(shù)據(jù)源上面,直接讀數(shù)據(jù)源里面的數(shù)據(jù),或者是直接往數(shù)據(jù)源里面寫入數(shù)據(jù)。典型的節(jié)點流是文件流:
- 字節(jié)流
- 文件的字節(jié)輸入流(FileInputStream)
- 文件的字節(jié)輸出流(FileOutputStream)
- 字符流
- 文件的字符輸入流(FileReader)
- 文件的字符輸出流(FileWriter)。
使用頻率還是比較高的,這些都是基石
3.2 處理流類型

處理流是包在別的流上面的流,相當于是包到別的管道上面的管道。
4.InputStream(輸入流)

凡是以InputStream結(jié)尾的管道,都是以字節(jié)的形式向我們的程序輸入數(shù)據(jù)。
4.1.InputStream的基本方法

- read()方法是一個字節(jié)一個字節(jié)地往外讀,每讀取一個字節(jié),就處理一個字節(jié)。
- read(byte[] buffer)方法讀取數(shù)據(jù)時,先把讀取到的數(shù)據(jù)填滿這個byte[]類型的數(shù)組buffer(buffer是內(nèi)存里面的一塊緩沖區(qū)),然后再處理數(shù)組里面的數(shù)據(jù)。
這就跟我們?nèi)∷粯?,先用一個桶去接,等桶接滿水后再處理桶里面的水。如果是每讀取一個字節(jié)就處理一個字節(jié),這樣子讀取也太累了。
5.OutputStream(輸出流)

5.1 OutputStream的基本方法

6.Reader流

6.1.Reader的基本方法

7.Writer流
