天天看點

Java輸入輸出流、過濾器、閱讀器、書寫器

1. 序言

Java輸入輸出涉及的概念比較多,涉及的類也很多,很容易搞混,是以還是非常有必要梳理下的。

2. 流

Java語言的輸入和輸出是基于流(stream)的,所謂的流很好了解,就是向水一樣向資料源中淌入資料,特點是一滴一滴的(從根本上講是一個二進制位一個二進制位的)。

流最基本的分為輸出流和輸入流,輸出流就是向資料源寫入資料,輸入流就是從資料源讀取資料。

3. 輸出流和輸入流

Java位輸入流和輸出流定義了抽象基類如下。

public abstract class OutputStream

public abstract calss InputStream

1

2

至于為啥定義抽象基類,因為在不确定資料源(來自螢幕?檔案?網絡?)的情況下,我們并不知道輸出流和輸入流如何具體實作,但是我們知道輸出流和輸入流應該能幹啥,是以定義抽象基類。這樣有個很大的好處,就是我們隻需要知道基類的方法,就知道各種輸入流和輸出流實作類的操作方法,這就是繼承、多态的好處!

可以用屁股想想,輸出流應該有write方法、輸入流應該有read方法,哈哈。

4. 過濾器流

過濾器流名字非常形象,就是在輸入、輸出流上加了一個過濾的玩意。例如,可以對流中的資料加密、解密。

5. 閱讀器和書寫器

閱讀器和書寫器其實也是過濾器流的一種,因為程式中讀寫文本(字元串)是一種非常常用的功能,在讀寫文本的時候,涉及字元編碼的一些情況,閱讀器和書寫器就是一種特殊的針對各種編碼的文本都能輕易讀寫的過濾器流。