【基礎】IO流

對於流的概念,感受晦澀難懂,根據我的的理解,整理下,以及一些經常使用的流java

1 概念理解

咱們舉個場景,從迅雷的服務器上,下載一部電影,大概的過程是,迅雷硬盤讀取到內存,經過網絡傳輸,到本地電腦內存,再由本地電腦,持久化到本地硬盤,這就是流,之因此叫流,由於像水流同樣,如上圖git

 

2 流的分類

1 按照流的方向而言:輸入流  輸出流api

輸入輸出是相對於內存而言的,從內存中出來的就是輸出流,到內存中的就是輸入流服務器

輸入流又叫作InputStream,輸入也叫作讀 Read   輸出流又叫作OutputStream,輸出也叫寫 Write網絡

這句話很重要,必定是先讀出來在寫,因此輸入流叫讀,輸出流叫寫spa

2  按照讀取數據方式不一樣:字節流 字符流.net

字節流按字節方式讀取   字符流按字符方式讀取(一次兩個字節)日誌

字節流適合讀取:視頻 聲音 圖片 等二進制的文件(微軟的doc文件,不是純文本,包括格式等)視頻

字符流適合讀取:純文本文件對象

java 語言中,全部的字節流都是以Stream結尾  全部的字符流都是以Reader或Writer結尾

 

3 具體的流

java.io.* (重點掌握這16個)
FileInputStream ----------------讀取文件 | 字節 | 輸入
FileOutputStream ---------------讀取文件 | 字節 | 輸出
FileReader ---------------------讀取文件 | 字符 | 輸入
FileWriter----------------------讀取文件 | 字符 | 輸出

BufferedInputStream ------------帶有緩衝區 | 字節 | 輸入
BufferedOutputStream------------帶有緩衝區 | 字節 | 輸出
BufferedReader------------------帶有緩衝區| 字符 | 輸入
BufferedWriter------------------帶有緩衝區| 字符 | 輸出

InputStreamReader--------------轉換流(字節流轉換成字符流) 
OutputStreamWriter-------------轉換流(字節流轉換成字符流) 


DateInputStream-----------------專門讀取數據 ,連同數據類型一同讀取(兩個一塊兒使用)
DateOutputStream----------------專門讀取數據 ,連同數據類型一同寫入(兩個一塊兒使用)

ObjectInputStream---------------專門讀取java對象,反序列化
ObjectOutputStream--------------專門讀取java對象,序列化

PrintWriter
PrintStream -------------------標準的輸出流(輸出到控制檯),與日誌打印功能密切相關

4 UML類圖

 咱們參考jdk文檔畫出UML類圖 :http://tool.oschina.net/apidocs/apidoc?api=jdk-zh 

 InputStream    OutputStream  Reader    Writer   (java中的流四你們族)

 InputStream    OutputStream

 

 

 

 

 

 

 

flush 僅僅針對輸出流,意思是把剩餘的東西一點不剩的輸出,好比一桶水,倒到缸裏,剩下一點,用個刷子,一點不剩的刷進去

 Reader    Writer

 

本文參考杜聚賓老師的視頻;

相關代碼已上傳碼雲:https://gitee.com/liuhuxiang/java

相關文章
相關標籤/搜索