首先: “流”的理解
在JAVA中,一組有序的數據序列稱為“流”
流分為輸入流和輸出流兩種!
JAVA的IO系統負責的就是程序的輸入和輸出! 好好看看java.io包!雖然這個包很復雜。 頭暈!
IO流: 1: 字節流 java.io.InputStream / java.io.OutputStream
2:字符流 java.io.Reader / java.io.Writer
疑問: 搞不懂他們,如果簡單的認為字節流是數據流中最小的數據單元是字節,字符流中最小的數據單元是字符,做開發的時候就像我一樣,頭暈。
字節流是最基本的! 字節流主要是用在二進制數據
字符流是基礎與字節流之上!處理UNICODE數據
有個問題就是 JAVA開發中所有的中文問題都是由字節流轉換成字符流的時候發生的!
記得在一篇文章上看到過一個寫關于字節流和字符流相關的東西!
叫做“搬蘋果”, 現在有一對蘋果,你怎么搬呢,用字節流是一個一個搬,字符流是做一個箱子然后把蘋果裝進箱子然后再搬! 大概意思就是這個樣子了,所以聽了感覺就是,字符流是字節流的包裝體了,事實上就是這個樣子的。但這樣說的話,好像是感覺字符流的效率要好過字節流了,不是這個樣子的,這個故事就是說明白了字節流是和字符流的運作過程!后來和同事談起來這個事情,他說的很好,他說字節流效率好!沒有了。后來又一位同事說:1:字節流速度快 2:字符流是通過字節流轉換的 所以這個故事和最后的答案都出來了!
這就是我對上面這個問題:字節流和字符流的區別的理解。
在網上找了很多IO的示例程序! 采用的IO的類或者接口可是說是讓人頭暈的很,所以不學習下IO的常用類或者接口是不行的啊 呵呵
從字節流開始:
InputStream :抽象類,是所有字節輸入流的超類
子類: ByteArrayInputStream: 把字節數組轉換為輸入流,把內存中的一個緩沖區作為InputStream 使用
FileInputStream : 從文件中讀取數據,把一個文件作為InputStream,實現對文件的讀取操作
PipedInputStream : 連接一個PipedInputStream,實現了pipe的概念,主要在線程中使用
SequenceInputStream : 把幾個輸入流轉換為一個輸入流,把多個InputStream合并為一個InputStream
ObjectInputStream :對象輸入流
FilterInputStream :裝飾器,具有擴展其他輸入流的功能
OutputStream:抽象類,是所有字節輸出流的超類
子類: ByteArrayOutputStream : 向字節數組(內存的緩沖區)中寫數據,把信息存入內存中的一個緩沖區中
FileOutputStream :向文件中寫數據,把信息存入文件中
PipedInputStream :向管道中輸出數據,與PipedInputStream搭配使用,實現了pipe的概念,主要在線程中使用
ObjectOutputStream :對象輸出流
FilterOutputStream :裝飾器,擴展其他輸出流的功能
字節輸入流和輸出流的所有類都在這里總結,大概意思就是這樣!慢慢加深理解。
字符流: (處理字符流最大的問題是進行字符編碼的轉換)
Reader : 讀取字符流的抽象類
子類:
CharArrayReader : 適配器,把字符數組轉換為Reader,從字符數組中讀取字符,與ByteArrayInputStream對應
BufferedReader : 裝飾器,為其他的Reader提供緩沖區。
LineNumberReader:裝飾器,為其他的Reader提供緩沖區,并且可以跟蹤字符輸入流中的行號
StringReader : 適配器,把字符串轉換為Reader,從字符串中讀取字符
PipedReader :連接一個PipedWriter
FilterReader : 裝飾器,擴展其他的Reader的功能
InputStreamReader : 適配器,把InputStream轉換為Reader,可以指定數據源的字符編碼
FileReader : 從文件中讀取字符
Writer : 寫入字符流的抽象類
子類:
CharArrayWriter : 適配器,把字符數組轉換為Witer,向字符數組中寫字符
BufferedWriter ; 裝飾器,為其他的Writer提供寫緩沖區
StringWriter :適配器,把StringBuffer轉換為Writer,向StringBuffer中寫字符
PipedWriter :連接一個PipedReader
FilterWriter :裝飾器,擴展其他的Writer的功能
PringWriter :裝配器,輸出格式化數據
OutputStreamWriter : 適配器,把OutputStream 轉換Writer ,可以指定數據匯的字符編碼
FileWriter : 向文件中寫字符
File 類
File類提供了管理文件或目錄的方法。File實例表示真實文件系統中的一個文件或者目錄。
總結:
1.流分為輸入流(作為數據源,讀操作)、輸出流(輸出目的,寫操作)。
2.字節流(以字節為單位操作),字符流(以字符為單位操作)
3.inputStreamReader,outputStreamWriter字節流,字符流之間的轉換器。
4.File文件,目錄操作類
5.字節流,字符流一大堆包裝類,便于操作。