1. 程式人生 > >10.2-全棧Java筆記:最全面的IO技術(二)

10.2-全棧Java筆記:最全面的IO技術(二)

java

上節我們聊到「IO技術概念及入門」這節我們繼續聊一下IO技術的分類。

Java中流的概念細分

按流的方向分類:

輸入流:數據流向是數據源到程序(InputStreamReader結尾的流)

輸出流:數據流向是程序到目的地(OutPutStreamWriter結尾的流)

按處理的數據單元:

字節流:按照字節讀取數據(InputStreamOutputStream)命名上以stream結尾的流一般是字節流。

字符流:按照字符讀取數據(ReaderWriter)。命名上以Reader/Writer結尾的流一般是字符流。

按處理對象不同分類:

節點流:可以直接從數據源或目的地讀寫數據。

處理流:不直接連接到數據源或目的地,是

處理流的流。通過對其他流的處理提高程序的性能。

節點流處於IO操作的第一線,所有操作必須通過他們進行;處理流可以對節點流進行包裝,提高性能或提高程序的靈活性。

JavaIO流類的體系

1 IO流體系

從上圖發現,很多流都是成對出現,比如:FileInputStream/FileOutputStream,顯然是對文件做輸入和輸出操作。我們下面簡單做個總結:

1.InputStream/OutputStream

字節流的抽象類。

2.Reader/writer

字符流的抽象類。

3. FileInputStream/FileOutputStream

節點流;以字節為單位直接操作“文件”

4. ByteArrayInputStream/ByteArrayOutputStream

節點流:以字節為單位直接操作“字節數組對象”

5. ObjectInputStream/ObjectOutputStream

節點流:以字節為單位直接操作“對象”

6. DataInputStream/DataOutputStream

節點流:以字節為單位直接操作“基本數據類型變量”

7. FileReader/FileWriter

節點流:以字符為單位直接操作“文本文件”(註意:只能讀寫文本文件)

8. BufferedReader/BufferedWriter

處理流:將普通的Reader/Writer對象進行包裝,增加緩存提高效率

9. BufferedInputStream/BufferedOutputStream

處理流:將普通的inputStream/outputStream對象進行包裝,增加緩存提高效率

10. InputStreamReader/OutputStreamWriter

處理流:將字節流對象轉化成字符流對象

11. PrintStream

打印流

老鳥建議:

上面的解釋,一句話就點中了流的核心作用。大家後面學習的時候,用心體會。

四大IO抽象類

InputStream/OutputStreamReader/writer類是所有IO流類的父類,我們有必要簡單了解一下這個四個抽象類的作用。然後,通過它們具體的子類熟悉相關的用法。

1) InputStream

此抽象類是表示字節輸入流的所有類的超類。InputSteam是一個抽象類,它不可以實例化。 數據的讀取需要由它的子類來實現。根據節點的不同,它派生了不同的節點流子類

繼承自InputSteam的流都是用於向程序中輸入數據,且數據的單位為字節(8 bit)。

常用方法:

int read(): 讀取一個字節的數據,並將字節的值作為int類型返回(0-255之間的一個值)。如果未讀出字節則返回-1

void close() 關閉輸入流對象,釋放相關系統資源

2) OutputStream

此抽象類是表示字節輸出流的所有類的超類。 輸出流接受輸出字節並將這些字節發送到某個接收器。

常用方法:

void write(int n) 向輸入流中寫入一個字節

void close() 關閉輸出流對象,釋放相關系統資源

3) Reader

Reader用於讀取字符流的抽象類,數據單位為字符。

int read(): 讀取一個字符的數據,並將字符的值作為int類型返回(0-65535之間的一個值,Unicode)。如果未讀出字符則返回-1

void close() 關閉流對象,釋放相關系統資源

4) Writer

Writer寫入字符流的抽象類,數據單位為字符。

void write(int n) 向輸入流中寫入一個字符

void close() 關閉輸出流對象,釋放相關系統資源





「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發經驗,曾在神州數碼、航天院某所研發中心從事軟件設計及研發工作,從小白逐漸做到工程師、高級工程師、架構師。精通Java平臺軟件開發,精通JAVAEE,熟悉各種流行開發框架。


筆記包含從淺入深的六大部分:

A-Java入門階段

B-數據庫從入門到精通

C-手刃移動前端和Web前端

D-J2EE從了解到實戰

E-Java高級框架精解

F-Linux和Hadoop



本文出自 “12931675” 博客,請務必保留此出處http://12941675.blog.51cto.com/12931675/1943932

10.2-全棧Java筆記:最全面的IO技術(二)