io流的簡單總結

2021-08-26 04:28:39 字數 3970 閱讀 3399

資料流分為輸入流(inputstream)和輸出流(outputstream)

inputstream屬於位元組輸入類,system.in 作為位元組輸入流類inputstream 的物件in 實現標準的輸入,其中有read方法從鍵盤接收資料;

inputstream的子類fileinputstream(檔案位元組輸入流類)

fileinputstream用於順序訪問本地檔案,讀取原始位元組流。

如:fileinputstream fis = new fileinputstream(「存放檔案的路徑」);

fileinputstream(file file) 通過開啟乙個到實際檔案的連線來建立乙個fileinputstream,該檔案通過檔案系統中的file物件file指定。而fileinputstream(string name)通過檔案系統中的路徑名name 指定。

//乙個file的簡單運用

file file = new file(fd.getdirectory(),fd.getfile());//獲取此檔案對話方塊的目錄,根據指定的路徑中的檔案返回相應的file物件

fileinputstream現階段最常見的兩個方法close()和read()

outputstream 屬於位元組輸出類,system.out 作為列印流類printstream的物件out實現標準輸出,其中有print和println兩個方法;system.err 與system.out相同,而system.out是實現printstream的物件out的標準輸出,system.err是實現標準的錯誤輸出。

outputstream的子類fileoutputstream(檔案位元組輸出流)

用於將資料寫入file或filedescriptor的輸入流。

例如:fileoutputstream fos = new fileoutputstream(「檔案路徑」);

fos.write(「hell world」);

主要的方法有close()和write()

reader類和writer類

它們專門處理字元流,這兩類都是抽象類.

reader常見的方法:int read():讀取乙個字元。返回的是讀到的那個字元,如果讀到流的末尾,返回-1。int read(char):將讀到的字元存入指定的陣列中,返回的是讀到的字元個數,也就是往陣列裡裝的元素的個數。如果讀到流的末尾,返回-1。close():讀取字元其實用的是window系統的功能,就希望使用完畢後,進行資源的釋放。

reader的子類filereader:

用於讀取文字檔案的流物件,用於關聯文字檔案。(讀取字元檔案)

在使用filereader操作文字資料時,該物件使用的是預設的編碼表,如果要使用指定的編碼表時,必須使用轉換流。

filereader fr = new filereader(」a.txt」);//文字檔案中的資料使用的是本系統預設的gbk

等同於inputstreamreader isr = new inputstreamreader(new fileinputstream(「a.txt」));

如果a.txt中的檔案中的字元資料是通過utf-8的形式編碼。那麼在讀取時,必須指定編碼表並使用轉換流inputstreamreader isr = new inputstreamreader(new fileinputstream(「a.txt」),」urf-8」);

字元流的緩衝區bufferedreader

特有方法:readline():一次讀一行,把字元資料作為字串返回

例如:bufferedreader bufr = new bufferedreader(new filereader(「buf.txt」));

string line = null;

while((line=bufr.readline())!=null){}

writer中的常見的方法:write(ch):將乙個字元寫入到流中;write(char):將乙個字元陣列寫入到流中。write(string)將乙個字串寫入到流中。flush():重新整理流,將流中的資料重新整理到目的地中,流還存在。close():關閉資源:先關閉前會先呼叫flush,重新整理流中的資料去目的地。然後流關閉。

filewriter://用法

filewriter fw = new filewriter(「demo.txt」);

fw.write(「safsd」);

bufferedwriter:

特有的方法:newline():跨平台的換行符。

建立緩衝區物件必須把流物件作為引數傳遞給緩衝區的建構函式。

bufferedwriter bufw = new bufferedwriter(new filewriter(「buf.txt」));

bufw.write(:absd」);//將資料寫入到了緩衝區

bufw.flush();//對緩衝區的資料進行重新整理。將資料刷到目的地中。

bufw.close();/關閉緩衝區,其實關閉的是被包裝在內部的流物件。

位元組緩衝流 bufferedinputstream 和 bufferedoutputstream

bufferedinputstream為另乙個輸入流新增一些功能,在建立bufferedinputstream時,會建立乙個內部緩衝區陣列。

例如:fileinputstream fis = new fileinputstream(「」);

bufferedinputstream bis = new bufferedinputstream(fis);

dateinputstream dis = new datainputstream(bis);

bufferedoutputstream:該類實現緩衝的輸出流。

例如:fileoutputstream fos = new fileoutputstream(「」);

bufferedoutputstream bos = new bufferedoutputstream(fos);

dateoutputstream dos = new dataoutputstream(bos);

主要的方法:flush():重新整理此緩衝的輸出流;write():將指定的位元組寫入緩衝的輸入流。

列印流printstream:為其他輸入流新增了功能,使它們能夠方便的列印各種資料值表示形式。列印的所有字元都使用平台的預設字元編碼轉換為位元組。在需要寫入字元而不是寫入位元組的情況下,應該使用printwriter類。

//既有自動重新整理,又可執行編碼

printwriter pw = new printwriter(new outputstreamwriter(new fileoutputstream(「a.txt」),」utf-8」),true);//該自動重新整理值為true時,只有三個方法可以用:println,printf,format。

//提高效率並且使用列印方法

printwriter pw = new printwriter(new bufferedwriter(new outputstreamwriter(new fileoutputstream(「a.txt」),」utf-8」)),true);

管道流:pipedinputstream和pipedoutputstream

可以將管道輸出流接到管道輸入流來建立通訊管道,通常兩個流在使用的時候,需要加入多執行緒技術,也就是讓讀寫同時執行。

合併流sequenceinputstream:它從輸入流的有序集合開始,並從第乙個輸入流開始讀取,直到到達檔案末尾,然後再讀取第二個輸入流,直到最後乙個輸入流。

例如:fileinputstream fis1 = new fileinputstream(「res/a.txt」);

fileinputstream fis1 = new fileinputstream(「res/b.txt」);

sequenceinputstream sis = new sequenceinputstream(fis1,fis2);

編碼轉換:

字串—>位元組陣列:編碼。通過getbytes(charset);

位元組陣列à字串:解碼。通過string類的建構函式完成。string(byte,charset);

io流的簡單總結

資料流分為輸入流 inputstream 和輸出流 outputstream inputstream屬於位元組輸入類,system.in 作為位元組輸入流類inputstream 的物件in 實現標準的輸入,其中有read方法從鍵盤接收資料 inputstream的子類fileinputstream...

IO流 簡單總結概述

重新深入的學習了io流,將之前沒搞懂的地方搞懂,這一篇旨在幫助大家理清io流初始的結構體系。什麼是流。流是一組有順序的,有起點和終點的位元組集合,是對資料傳輸的總稱和抽象。即資料在兩個裝置間的傳輸成為流,其本質就是資料傳輸。在根據資料傳輸特性將流抽象為各種類。2.流的分類。根據處理資料型別的不同 字...

IO流 字元流 IO流小結 IO流案例總結

1 字元流 掌握 1 位元組流操作中文資料不是特別的方便,所以就出現了轉換流。轉換流的作用就是把位元組流轉換字元流來使用。2 轉換流其實是乙個字元流 字元流 位元組流 編碼表 3 編碼表 a 就是由字元和對應的數值組成的一張表 b 常見的編碼表 ascii iso 8859 1 gb2312 gbk...