java io流

結構圖

根據處理類型分

根據處理數據的數據類型的不同可以分為:字節流(抽象基類為InPutStream和OutPutStream)和字符流(抽象基類為Reader和Writer)。根據流向不同,可以分為:輸入流和輸出流。

字符流和字節流的主要區別:

  • 1.字節流讀取的時候,讀到一個字節就返回一個字節; 字符流使用了字節流讀到一個或多個字節(中文對應的字節數是兩個,在UTF-8碼表中是3個字節)時。先去查指定的編碼表,將查到的字符返回。
  • 2.字節流可以處理所有類型數據,如:圖片,MP3,AVI視頻文件,而字符流只能處理字符數據。只要是處理純文本數據,就要優先考慮使用字符流,除此之外都用字節流。

IO流主要可以分為節點流和處理流兩大類

節點流類型

可以從一個特定的地點或節點讀寫數據

類型 字符流 字節流
File(文件) FileReader FileWriter FileInputStream FileOutputSream
Memory Array CharArrayReader CharArrayWriter ByteArrayInputStream ByteArrayOutputSream
Memory String StringReader StringWriter -
Pipe(管道) PipedReader PipedWriter PipedInputSream PipedOutputSream

處理流類型

該類型是對一個已存在的流的連接和封裝,通過所封裝的流的功能調用實現數據讀寫,處理流的構造方法總是要帶一個其他流對象作為參數,一個流對象進過其他流的多次包裝,叫做流的鏈接。主要可以分為以下幾種:

緩沖流(BufferedInPutStream/BufferedOutPutStream和BufferedWriter/BufferedReader)他可以提高對流的操作效率
  • 寫入緩沖區對象
    BufferedWriter bufw=new BufferedWriter(new FileWriter("buf.txt"));
  • 讀取緩沖區對象:
    BufferedReader bufr=new BufferedReader(new FileReader("buf.txt"));

該類型流有readLine()方法一次讀取一行,直到末尾返回null

轉換流(InputStreamReader/OutputStreamWriter)

該類型是字節流與字符流之間的橋梁,可以對讀取到的字節數據進行指定編碼的編碼轉換,構造函數主要有:

 InputStreamReader(InputStream);        //通過構造函數初始化,使用的是本系統默認的編碼表GBK。  
 InputStreamWriter(InputStream,String charSet);   //通過該構造函數初始化,可以指定編碼表。  
 OutputStreamWriter(OutputStream);      //通過該構造函數初始化,使用的是本系統默認的編碼表GBK。  
 OutputStreamwriter(OutputStream,String charSet);   //通過該構造函數初始化,可以指定編碼表。 

(字節流轉字符流)FileReader fr=new FileReader(“a.txt”); 與 InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt")); 的意義相同,指定編碼如InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt"),utf-8);

數據流(DataInputStream/DataOutputStream)

數據流可以方便地對一些基本類型數據進行直接的存儲和讀取,不需要再進一步進行轉換,通常只要操作基本數據類型的數據,就需要通過DataStream進行包裝。構造方法:

DataInputStreamReader(InputStream);  
 DataInputStreamWriter(OutputStream);```
方法舉例

int readInt();//一次讀取四個字節,并將其轉成int值
writeInt(int);//一次寫入四個字節,注意和write(int)不同,write(int)只將該整數的最低一個8位寫入,剩余三個8為丟失
hort readShort();
writeShort(short);
String readUTF();//按照utf-8修改版讀取字符,注意,它只能讀writeUTF()寫入的字符數據。
writeUTF(String);//按照utf-8修改版將字符數據進行存儲,只能通過readUTF讀取。

###打印流(PrintStream/PrintWriter)
PrintStream是一個字節打印流,System.out對應的類型就是PrintStream,它的構造函數可以接受三種數據類型的值:1.字符串路徑。2.File對象 3.OutputStream
PrintStream是一個字符打印流,它的構造函數可以接受四種類型的值:1.字符串路徑。2.File對象 3.OutputStream  4.Writer  對于1、2類型的數據,可以指定編碼表,也就是字符集,對于3、4類型的數據,可以指定自動刷新,當該自動刷新為True時,只有3個方法可以用:println,printf,format。
###對象流(ObjectInputStream/ObjectOutputStream)
 該類型的流可以把類作為一個整體進行存取,主要方法有:
Object readObject();該方法拋出異常:ClassNotFountException。
void writeObject(Object):被寫入的對象必須實現一個接口:Serializable,否則就會拋出:NotSerializableException
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,238評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,430評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,134評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,893評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,653評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,136評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,212評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,372評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,888評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,738評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,482評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,179評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,588評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,829評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,610評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,916評論 2 372

推薦閱讀更多精彩內容

  • 一、IO流整體結構圖 流是一組有順序的,有起點和終點的字節集合,是對數據傳輸的總稱或抽象。即數據在兩設備間的傳輸稱...
    慕凌峰閱讀 1,169評論 0 12
  • 標準輸入輸出,文件的操作,網絡上的數據流,字符串流,對象流,zip文件流等等,java中將輸入輸出抽象稱為流,就好...
    navy_legend閱讀 725評論 0 0
  • 摘要 Java I/O是Java技術體系中非常基礎的部分,它是學習Java NIO的基礎。而深入理解Java NI...
    biakia閱讀 7,624評論 7 81
  • ①IO流(字符流FileReader) 1.字符流是什么字符流是可以直接讀寫字符的IO流字符流讀取字符, 就要先讀...
    Y小圓臉閱讀 524評論 0 2
  • IO流 看著字少,內容著實不少,這里開始就給諸君推薦一篇大神的博客,總結的思路清晰,鬼斧神工,哈哈,總之總結的很好...
    向日花開閱讀 835評論 0 8