290、Java中級07 - 【I/O】 2020.01.11

1、文件和文件夾都是用File代表

2、什麼是流Stream?

流就是一系列的數據

當不同的介質之間有數據交互的時候,JAVA就使用流來實現。
數據源可以是文件,還可以是數據庫,網絡甚至是其他的程序

比如讀取文件的數據到程序中,站在程序的角度來看,就叫做輸入流
輸入流: InputStream
輸出流:OutputStream

3、字節流

InputStream字節輸入流
OutputStream字節輸出流
用於以字節的形式讀取和寫入數據

4、字符流

Reader字符輸入流
Writer字符輸出流
專門用於字符的形式讀取和寫入數據

5、緩存流

以介質是硬盤爲例,字節流和字符流的弊端:
在每一次讀寫的時候,都會訪問硬盤。 如果讀寫的頻率比較高的時候,其性能表現不佳。

爲了解決以上弊端,採用緩存流。
緩存流在讀取的時候,會一次性讀較多的數據到緩存中,以後每一次的讀取,都是在緩存中訪問,直到緩存中的數據讀取完畢,再到硬盤中讀取。

就好比吃飯,不用緩存就是每吃一口都到鍋裏去鏟。用緩存就是先把飯盛到碗裏,碗裏的吃完了,再到鍋裏去鏟

緩存流在寫入數據的時候,會先把數據寫入到緩存區,直到緩存區達到一定的量,才把這些數據,一起寫入到硬盤中去。按照這種操作模式,就不會像字節流,字符流那樣每寫一個字節都訪問硬盤,從而減少了IO操作

5.1 使用緩存流讀取數據

緩存字符輸入流 BufferedReader 可以一次讀取一行數據

5.2 使用緩存流寫出數據

PrintWriter 緩存字符輸出流, 可以一次寫出一行數據

5.3 flush

有的時候,需要立即把數據寫入到硬盤,而不是等緩存滿了才寫出去。 這時候就需要用到flush

6、數據流

DataInputStream 數據輸入流
DataOutputStream 數據輸出流

7、對象流

對象流指的是可以直接把一個對象以流的形式傳輸給其他的介質,比如硬盤
一個對象以流的形式進行傳輸,叫做序列化。 該對象所對應的類,必須是實現Serializable接口

8、System.in

System.out 是常用的在控制檯輸出數據的
System.in 可以從控制檯輸入數據

9、參考鏈接

【01】How2j - IO系列

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章