1.1 outputstreamwriter
1)介紹
outputstreamwriter 是字元流通向位元組流的橋梁:可使用指定的字元編碼表,將要寫入流中的字元編碼成位元組。
它的作用的就是,將字串按照指定的編碼表轉成位元組,再使用位元組流將這些位元組寫出去。
2)示例
// 1 建立與檔案關聯的位元組輸出流物件
fileoutputstream fos =
newfileoutputstream
("/users/mac/mydata/ioouttest.txt");
// 2 建立可以把字元轉成位元組的轉換流物件,並指定編碼
outputstreamwriter osw =
newoutputstreamwriter
(fos,
"utf-8");
// 3 呼叫轉換流,把文字寫出去,其實是寫到轉換流的緩衝區中
osw.
write
("你好");
// 寫入緩衝區。
// 4 重新整理並關閉流
osw.
close()
;
1.2 inputstreamreader
1)介紹
inputstreamreader 是位元組流通向字元流的橋梁:它使用指定的字元編碼表讀取位元組並將其解碼為字元。
它使用的字符集可以由名稱指定或顯式給定,或者可以接受平台預設的字符集。
2)示例
// 1 建立讀取檔案的位元組流物件
inputstream in =
newfileinputstream
("/users/mac/mydata/ioouttest.txt");
// 2 建立轉換流物件
inputstreamreader isr =
newinputstreamreader
(in,
"utf-8");
// 3 使用轉換流去讀位元組流中的位元組
int ch =0;
while
((ch = isr.
read()
)!=-1
)// 關閉流
isr.
close()
;
注意:在讀取指定的編碼的檔案時,一定要指定編碼格式,否則就會發生解碼錯誤,而發生亂碼現象。
1.3 轉換流和子類的區別
outputstreamwriter --> filewriter
inputstreamwriter --> filereader
當操作的字元檔案,使用的是預設編碼表時可以不用父類,直接用子類就能完成操作,簡化了**。
一旦要指定其他編碼時,絕對不能用子類,必須使用字元轉換流。
2.1 位元組緩衝流
1)位元組緩衝輸出流 bufferedoutputstream
// 1 建立位元組輸出流
fileoutputstream fos=
newfileoutputstream
("/users/mac/mydata/ioouttest.txt");
// 使用緩衝流封裝
bufferedoutputstream bos=
newbufferedoutputstream
(fos)
;// 2 寫資料
bos.
write
("hello world\n"
.getbytes()
);// 3 關閉流
bos.
close()
;
2)位元組緩衝輸入流 bufferedinputstream
// 1 建立位元組輸入流
fileinputstream fis=
newfileinputstream
("/users/mac/mydata/ioouttest.txt");
// 2 包裝基本流
bufferedinputstream bis=
newbufferedinputstream
(fis)
;// 3 讀資料
int ch=-1
;while
((ch=bis.
read()
)!=-1
)// 4 關閉流
bis.
close()
;
2.2 字元緩衝流
1)字元緩衝輸出流 bufferedwriter
// 1 建立流
filewriter fw =
newfilewriter
("/users/mac/mydata/ioouttest.txt");
bufferedwriter bw =
newbufferedwriter
(fw)
;// 2 寫資料
for(
int i =
0; i <
5; i++
)// 3 關閉流
bw.close()
;
2)字元緩衝輸入流 bufferedreader
// 1 建立流
bufferedreader br=
newbufferedreader
(new
filereader
("/users/mac/mydata/ioouttest.txt"))
;// 2 讀資料
string line=null;
while
((line=br.
readline()
)!=null)
// 3 關閉流
br.close()
;
2.3 使用字元緩衝流完成文字檔案複製// 1 指定資料來源和目的檔案
bufferedreader br=
newbufferedreader
(new
filereader
("/users/mac/mydata/ioouttest.txt"))
;bufferedwriter bw=
newbufferedwriter
(new
filewriter
("/users/mac/mydata/ioouttest_copy2.txt"))
;// 2 讀資料與寫資料
string line=null;
while
((line=br.
readline()
)!=null)
// 3 關閉流
bw.close()
;br.
close()
;
1)運算元據的型別
2)資料所在位置
3)是否需要額外功能
轉換流 緩衝流
輸入 輸出流體系中提供了兩個轉換流,這兩個轉換流用於實現將位元組流轉換為字元流。1.1outputstreamwriter outputstreamwriter 是字元流通向位元組流的橋梁 可使用指定的字元編碼表,將要寫入流中的字元編碼成位元組。它的作用的就是,將字串按照指定的編碼表轉成位元組,在使...
Java IO流 字元流 與 轉換流 詳解
乙個字元字元的讀 只能用來操作文字 不能寫其他格式 寫入字元流的抽象類 實現子類 filewriter 示例 public class demo04 fwriter.write c fwriter.flush fwriter.write c,1,3 fwriter.flush 使用字串直接寫入 fw...
Java IO 二 IO流 處理流 轉換流
io流 處理流 轉換流 1.轉換流 位元組流轉換為字元流,為了處理亂碼 編碼集 解碼集 2.編碼與解碼的概念 1 編碼 字元 編碼字符集 二進位制 2 解碼 二進位制 解碼字符集 字元 3.亂碼的原因 1 編碼和解碼的字符集的不統一 解碼 byte char 我的ide預設解碼字符集為gbk str...