常用的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 ...