常用的IO流

2022-08-17 11:27:13 字數 3741 閱讀 5573

常用的io流

•根據處理資料型別的不同分為:位元組流和字元流

•根據資料流向不同分為:輸入流和輸出流

位元組輸入流:

inputstream 是所有的輸入位元組流的父類,它是乙個抽象類。

常用的位元組輸入流:

bytearrayinputstream、stringbufferinputstream、fileinputstream、pipedinputstream,

它們分別從byte 陣列、stringbuffer、本地檔案中、和從與其它執行緒共用的管道中讀取資料。

objectinputstream 和所有filterinputstream 的子類都是裝飾流。

位元組輸出流:

outputstream 是所有的輸出位元組流的父類,它是乙個抽象類。

常用的位元組輸出流:

2.bytearrayoutputstream、fileoutputstream、pipedoutputstream,它們分別向byte 陣列、本地檔案、和向與其它執行緒共用的管道中寫入資料。

objectoutputstream 和所有filteroutputstream 的子類都是裝飾流。

字元流:

只能處理字元型別的資料,因為資料編碼的不同,而有了對字元進行高效操作的流物件。

本質其實就是基於位元組流讀取時,去查了指定的碼表。讀寫以字元為單位,一次可能讀多個位元組。

字元輸入流:

reader 是所有的輸入字元流的父類,它是乙個抽象類。

常見的字元輸入流:

charreader、stringreader、pipedreader

inputstreamreader 是乙個連線位元組流和字元流的橋梁,可對讀取到的位元組資料經過指定編碼轉換成字元。

filereader 可以說是乙個達到此功能、常用的工具類

bufferedreader 是乙個裝飾器,它和其子類負責裝飾其它reader 物件。

filterreader 是所有自定義具體裝飾流的父類

字元輸出流

writer 是所有的輸出字元流的父類,它是乙個抽象類。

常見的字元輸出流:

chararraywriter、stringwriter、pipedwriter、printwriter

outputstreamwriter 是outputstream 到writer 轉換的橋梁,可對讀取到的字元資料經過指定編碼轉換成位元組。

filewriter 可以說是乙個達到此功能、常用的工具類

bufferedwriter 是乙個裝飾器為writer 提供緩衝功能。

位元組流的例子:

1/**

2* @ 位元組流3*/

4public

static

void streamdemo() 

13//

讀入流14

inputstream in = new fileinputstream(inputfile);

15//

輸出流16

outputstream out = new fileoutputstream(new file("d:\\book" + system.currenttimemillis() + ".txt"));

17//

讀到的位元組數

18int readbytes;

19byte  buffer = new

byte [1024];

20while ((readbytes = in.read(buffer)) != -1) 

23             out.flush();

24             out.close();

25             in.close();

26         } catch (ioexception e) 

29     }

字元流的例子:

1/**

2* @ 字元流3*/

4public

static

void readerdemo() 

13//

讀入流14

inputstreamreader in = new filereader(inputfile);

15             bufferedreader bf = new bufferedreader(in);

16//

輸出流17

printwriter out = new printwriter(new file("d:\\book" + system.currenttimemillis() + ".txt"));

18             string str;

19while ((str = bf.readline()) != null) 

23             out.flush();

24             out.close();

25             bf.close();

2627         } catch (ioexception e) 

30     }

編碼轉換的例子:

1/**

2* @ 編碼轉換3*/

4public

static

void gbk2utf8demo() 

13//

讀入時檔案編碼為gbk

14            inputstreamreader in = new inputstreamreader(new fileinputstream(inputfile),"gbk");

15             bufferedreader bf = new bufferedreader(in);

16//

輸出時檔案編碼變為utf-8

17            outputstreamwriter outwriter = 

new outputstreamwriter(new fileoutputstream(new file("d:\\book" + system.currenttimemillis() + ".txt")),"utf-8");

18             printwriter out = new printwriter(outwriter,true);

19             string str;

20//

一直讀到檔案的最後為止

21while ((str = bf.readline()) != null) 

25//

關閉流26

out.flush();

27             out.close();

28             bf.close();

2930         } catch (ioexception e) 

33     }

物件序列化與反序列化的例子:

class user implements serializable

/*** @ 物件的序列化與反序列化

*/public

static

void serializedemo()  catch (classnotfoundexception e)  catch (ioexception e) 

}讀寫特定型別資料的例子:

/*** @ 讀寫特定資料型別的流

*/public

static

void dataoutputstreamdemo ()  catch (ioexception e) }

速記IO流中常用的幾種流

運算元據的單位 位元組流,字元流 資料的流向 輸入流,輸出流 流的角色 節點流,處理流 流的體系結構 抽象基類 位元組流 或檔案流 處理流 緩衝流 屬於處理流的一種 inputstream fileinputstream bufferedinputstream outputstream fileou...

java中的常用IO流

輸入流inputstream 只能從中讀取位元組資料,而不能向其寫出資料 輸出流outputstream 只能向其寫入位元組資料,而不能從中讀取資料 輸入流inputstream 1.dataoutputstream建立乙個新的資料輸出流,將資料寫入指定基礎輸出流。2.printstream是乙個位...

IO流的常用方法(一)

作用 1.操作檔案及目錄的屬性 2.不可操作檔案內容 3.建立檔案及目錄 4.刪除檔案及目錄 構造方法 第一種 file f newfile d mydir hello.txt 第二種 file f newfile d mydir hello.txt 第三種 file parent newfile ...