PrintWriter類

OneCode2World發表於2015-08-05
 

PrintWriter類


java.io包

1)首先先知道它的八種構造方法,但怎麼記住這八種呢?我們都知道PrintWriter是一種過濾流,也叫處理流。也就是能對位元組流和字元流進行處理,所以它會有:

PrintWriter(OutputStream out)  根據現有的 OutputStream 建立不帶自動行重新整理的新 PrintWriter。

PrintWriter(Writer out)  建立不帶自動行重新整理的新 PrintWriter。


  這兩種構造方法。由於PrintWriter能夠實現自動重新整理所以又衍生出另兩種:

PrintWriter(OutputStream out, boolean autoFlush)  通過現有的 OutputStream 建立新的 PrintWriter。

PrintWriter(Writer out, boolean autoFlush)  建立新 PrintWriter


  true代表能自動重新整理。注意這四種均不能指定編碼集,但PrintStream中對OutprintStream操作時是可以的。【其中原因我不知,有知道的朋友歡迎指教】。

  然後PrintWriter能夠直接對檔案操作,所以還有這兩種構造方法:

PrintWriter(File file) 使用指定檔案建立不具有自動行重新整理的新 PrintWriter。

PrintWriter(String fileName)  建立具有指定檔名稱且不帶自動行重新整理的新 PrintWriter。


  注意該構造方法無法指定能否自動重新整理,但可以指定字符集所以又衍生出兩種:

PrintWriter(File file, String csn)  建立具有指定檔案和字符集且不帶自動刷行新的新 PrintWriter。

PrintWriter(String fileName, String csn)  建立具有指定檔名稱和字符集且不帶自動行重新整理的新 PrintWriter。


2)熟記這八種構造方法,你可以隨心構造你需要的PrintWriter物件了(假如為pw)。那它實現了什麼介面呢?

1.Closeable介面, 所以它有pw.close()方法來實現對PrintWriter的關閉。

2.Flushable介面,所以它有pw.flush()方法來實現人為的重新整理。

3.Appendable介面,所以它有pw.append(char c)方法來向此輸出流中追加指定字元,等價於print().

3)下面就是它的方法。

返回型別為PrintWriter的方法

append(char c)

format(String regex,Object args)以指定格式的字串和引數寫入PrintWriter,我個人認為等同於printf

printf()

返回型別為void的方法

println(Object obj)列印obj,可以是基本資料型別或物件,並換行

print(Object obj)同上,但不換行

write(int i) 寫入單個字元i

write(char[] buf)  寫入字元陣列。

write(char[] buf, int off, int len)  寫入字元陣列的某一部分。

write(String s) 寫入字串 

write(String s, int off, int len)寫入字串的某一部分

個人認為:write()方法與print()方法基本一致 但是write(char[] buf, int off, int len)print()不行。但筆者推薦使用Print系列方法,這正是PrintWriter類的價值所在。

返回型別為boolean型別的方法

checkError() 重新整理流並檢查其錯誤狀態

4)舉例:

import java.io.IOException;
import java.io.PrintWriter;
import java.io.FileWriter;
import java.io.File;


public class PrintWriterDemo {

public static void main(String[] args) {
PrintWriter pw = null;
String name = "張鬆偉";
int age = 22;
float score = 32.5f;
char sex = '男';
try{
pw = new PrintWriter(new FileWriter(new File("e:\\file.txt")),true);
pw.printf("姓名:%s;年齡:%d;性別:%c;分數:%5.2f;", name,age,sex,score);
pw.println();
pw.println("多多指教");
pw.write(name.toCharArray());
}catch(IOException e){
e.printStackTrace();
}finally{
pw.close();
}
}
}

上面這個例子中呢,完全可以把pw = new PrintWriter(new FileWriter(new File("e:\\file.txt")),true);中的new  FileWrite去掉 毫無影響且可以指定字符集。

總結:PrintWriter是一個非常實用的輸出流,下一篇我將介紹一個非常實用的輸入流Scanner

相關文章