字元流Writer、緩衝字元流BufferedWriter、FileWriter常用方法
一、字元流:
讀寫時都是以字元為單位進行的。
1:字元流的父類:
輸出流:Writer
輸入流:Reader
2:OutputStreamWriter:是字元流通向位元組流的橋樑:可使用指定的
將要寫入流中的字元編碼成位元組。charset
它使用的字符集可以由名稱指定或顯式給定,否則將接受平臺預設的字符集。
3. 構造器如下:
1) 輸出流的構造器:
OutputStreamWriter(OutputStream os)
OutputStreamWriter(OutputStream os,String charset)
2) 輸入流的構造器:
InputStreamReader(InputStream is)
InputStreamReader(InputStream is,String charset])
3)常用方法:
close():關閉此流,但要先重新整理它 flush():重新整理該流的緩衝。 getEncoding(): 返回此流使用的字元編碼的名稱。 write(char[] cbuf, int off, int len) :寫入字元陣列的某一部分。 write(int c) :寫入單個字元。 write(String str, int off, int len): 寫入字串的某一部分 寫出引數num的二進位制的低十六位。 * write(char[] ch): * write(char[] ch,int startIndex,int length) * write(String str):寫出字串 * write(String str,int startIndex,int length)
二、:緩衝字元流:
1)BufferedWriter--必須傳一個字元流引數 , [ 字元輸出緩衝流: 緩衝流-字元輸出流-位元組輸出流]
定義: 從字元輸入流中讀取文字,緩衝各個字元,從而實現字元、陣列和行的高效讀取。
2)構造器:
BufferedWriter bw=new BufferedWriter( new OutputStreamWriter(
new FileOutputStream("b.txt",true) , "utf-8" ) ) ;
BufferedReader br=new BufferedReader( new InputStreamReader(
new FileInputStream("b.txt"),"utf-8"));
例子:
bw.write('王');
bw.flush();//實時重新整理到硬碟上 清空緩衝區的意思
bw.write("從明".toCharArray());//6個
bw.write("你好帥\r\n");
bw.close();//流關閉前才會清空
3)常用方法://可讀取一行
1) int read():
* 返回一個字元的int數值
2)read(char[] ch)
* 讀取多個字元存入字元陣列中
3)readLine()
* 讀取一行字串,讀不到資料返回null
4)write(char ch)
* 作用:是寫一個字元型別
5)write(char[] ch)
* 作用:寫出一個字元陣列
6)write(char[] ch,int startIndex,int length)
* 作用:寫出一個固定長度的字元陣列
7)write(String str):
* 作用:寫出一個字串
8)write(String str,int startIndex,int length)
4).技巧:
* 一般都是PrintWriter和bufferedReader對應著使用。
* PrintWriter這個類提供了自動重新整理功能,
* 要使用帶ln的println的方法
* 此類提供了很多個構造器:
* 常用的兩個:
* PrintWriter(OutputStream so,boolean autoFlush)---位元組流
* PrintWrite(Writer wt,boolean autFlush)
* 當autoFlush位true時,
* 提供了自動重新整理緩衝區的功能
PrintWriter pw=new PrintWriter(
new FileOutputStream("c.txt",true),true);
pw.println("世界你好");//流關閉前,一定會呼叫flush方法進行清空緩衝區。
pw.flush();當構造器沒有設定行重新整理功能時,可以手動調此方法進行實時更新。
三、FileReader: --也有重新整理功能,但是不自動換行
1.構造器:
FileReader(String filepath)
FileReader(File file)
相當於InputStreamReader和FileInputStream的結合
FileWriter: 不自動換行
1.構造器:
FileWriter(File file,[boolean append])
FileWriter(String filepath,[boolean append])
相當於OutputStreamWriter和FileOutputStream的結合(BufferedWriter)
例:FileWriter fw=new FileWriter("a.txt",true);
fw.write("asdfasdfa123121313214342112");
fw.flush();
fw.close();