IO流總結
按方向來分有兩種流:
輸入流和輸出流,這兩個通過相應的流的名字可以區分,例如InputStream和OutputStream,FileReader和FileWriter等等。
按作用來分也有兩種:
節點流和處理流
節點流:節點流就是一個管道直接插到數據源上面,直接讀取數據源上面的數據,或者直接往數據源裏面寫入數據。
典型的節點流:文件流,例如:文件的字節輸入流(FileInputStream),文件的字節輸出流(FileOutputStream),文件的字符輸入流(FileReader),文件的字符輸出流(FileWriter)。
處理流: 是對一個已存在的流的連接和封裝,再通過這個封裝的流實現數據調用和讀寫,通俗的說處理流就是包在別的流上面的流,相當於是包到別的管道上面的管道。
常見的處理流有:
1.緩沖流 BufferedImputStrean BufferedOutputStream BufferedReader BufferedWriter ----需要父類作為參數構造,增加緩沖功能,避免頻繁讀寫硬盤,可以初始化緩沖數據的大小,由於帶了緩沖功能,所以就寫數據的時候需要使用flush方法
2.轉換流 InputStreamReader OutputStreamWriter- 要inputStream 或OutputStream作為參數,實現從字節流到字符流的轉換
3.數據流 *DataInputStream DataOutputStream -提供將基礎數據類型寫入到文件中,或者讀取出來,為什麽要有這個流呢?看這樣的分析,如果沒有這種流的話,有一個long,本身只占8個字節,如果我要寫入到文件,需要轉成字符串,然後在轉成字符數組,那空間會占用很多,但是有了這種流之後就很方便了,直接將這8個字節寫到文件就完了。。是不是既節約了內存空間有讓程序寫起來更加方便簡單了吶。寫倒是很簡單,但是讀取的時候就註意了,根據讀取的數據類型,指針會往下移,所以你寫的順序必須要和讀的順序一致才能完成你正確的需求。
IO流總結