java中IO流体系以及常用实现类
一、體系
??分為字節流和字符流,也可以說是分為輸入流和輸出流。字節流InputStream,OutputStream以字節形式操作二進制文件非常合適。字符流Writer和Reader操作文本比較適宜。輸入輸出流的參照物是內存,把東西拿到內存里面來的就是輸入流,從內存中拿東西出去的就是輸出流。
??所有IO的實現類子類后綴都是上述4個類,都是抽象類。結構還是比較清晰的。IO 實現了對文件的讀寫操作。
二、常用實現類
我們用上述4個類的子類來實際應用。
應用的思路是:
先用File類new一個文件,但是,一般不用明寫出來。直接用初級實現類關聯文件(如FileInputStream),然后緩沖字節流包裝初級類(如BufferedInputStream)。
InputStream:
FileInputStream,初級實現類,一個字節一個字節的操作,性能較低。
BufferedInputStream,有緩沖的字節輸出流,性能較高。
ObjectInputStream,對象字節輸入流,把序列化的對象讀取出來,即反序列化。如果序列化的對象有版本號,則必須和版本號保持一致。
OutputStream:
FileOutputtStream,初級實現類,一個字節一個字節的操作,性能較低。
BufferedOutputStream,有緩沖的字節輸出流,性能較高。
ObjectInputStream,對象字節輸出流,序列化對象用的。意思是把對象保存到文件。對象必須實現Serializable接口。
Writer:
FileWriter,單個字符的寫入字符,性能較低。
BufferedWriter,緩沖字符流,性能較高。
InputStreamWriter,轉換流,指定寫入文件的編碼,解決亂碼問題。
Reader:
FileReader,單個字符的讀取字符,性能較低。
BufferedReader,緩沖字符流,性能較高。
InputStreamWriter,轉換流,指定以什么編碼方式讀取文件,解決亂碼問題。
附:打印流
PrintWriter,打印流。鍵盤輸入什么就是什么,最方便的字符輸入流。而且性能較高。
2023.1.4加更
- 節點流。
- 直接操作文件,但功能較為簡單,效率較低。
- 處理流。
- 不能直接操作文件,而是包裝節點流使其更高效,更強大。采用修飾者模式。
- 使用完畢,關閉最外層的流即可。
- 對象流。
- 序列化對象用的,即保存對象的數值和類型。
- 轉換流。
- 指定編碼形式來讀取文件,解決亂碼問題。
- 底層操作仍然是字符流,屬于包裝流一類,不能直接操作文件。只有節點流可以直接操作文件。
- 打印流
- 打印流只有輸出流。輸出比較方便??梢灾囟ㄏ騍ystem.out的輸出位置。
總結
以上是生活随笔為你收集整理的java中IO流体系以及常用实现类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 10g RAC 维护工具完
- 下一篇: 4274. 【NOIP2015模拟10.