這兩天學習了IO流,整理了一些理論知識點,僅供參考。
java流概述
一 流
從操作系統層面和文件系統,數據保存相關的是所有語言都具備的一個基本功能,java專門開發了一個包:java.io.*;java流是Sun/Oracle公司專門為文件操作,數據傳輸開發出來的一些類,但是取了個特別的名字,叫流(繼承于unix->linux),只要記住他們就是一些類就可以了沒什么特別的;所有的打開的流都必須關閉,因為打開的流是很耗費資源的,并且很不安全;
流中的操作對象是指內存中當前操作的程序而言的,輸入是指往程序中導入數據,輸出是當前程序中的數據導出到外部,這個外部是指:內存中別的程序,內存中的緩存,硬盤,U盤,遠程連接等,但是我們不管這些細節,直接導出就可以,由java底層處理
I:input:什么叫input輸入流
這個是以當前內存中運行那一段程序為標準,從外部寫入的數據叫輸入
O:output:什么叫output輸出流:往外部寫出的數據叫輸出
二 流類架構圖(常用的十六個流)
所有的的類都繼承Closeable接口,用于關閉流;
Closeable:意思是需要程序員去手動關閉的程序
所有的輸出流在繼承Closeable的同時,也都繼承了Flushable,用于將緩存的數據強行刷入文件
接口
Closeable,Flushable
基礎實現類,原始類,打開連接,讀取數據
FileInputStream
FileOutputStream
FileReader
FileWriter
包裝流,在原始的基礎上進行強化
緩存,以加快速度,多次讀,一次寫,為什么?硬盤等物理設備,讀比寫要快.同時因為一次只能讀8-16bit,所以我們開辟個緩沖區,讀一片,然后一次寫入
BufferedReader
BufferedWriter
BufferedInputStream
BufferedOutputStream
數據來源于內存
DataInputStream
DataOutputStream
序列化
ObjectInputStream
ObjectOutputStream
轉換類:講字節流轉換成字符流
InputStreamReader
OutputStreamWriter
格式化輸出:要對數據輸出前進行排版
PRintWriter
PrintStream //標準輸出類,默認把數據輸出到控制臺
java中的流類全部都可以劃分成這四個類:
InputStream,OutputStream:字節流
Reader,Writer:字符流
三 類的分類
原始流類:用于打開連接,里面不能傳入一個流,而是一個具體的數據定位,是直接操作數據的,
四個原始流類:
FileInputStream
FileOutputStream
FileReader
FileWriter
別的都是包裝流
包裝類(包裹類):在連接基礎上進行操作,里面傳入是一個流類,也就是一個類,對象,要用到多態,就是包裝流,包裝流不能獨立存在,對原始流進行在加工處理的
用PowerDesigner寫的每個流及與接口的關系
最后用Xmind總結一下:


以上就是我對IO流的總結,只是一個大概,具體的操作沒有,后面會加進來,望斧正!
新聞熱點
疑難解答