public class PrintWriterextends Writer
向文本輸出流打印對象的格式化表示形式。此類實現在 PrintStream
中的所有 print 方法。它不包含用於寫入原始字節的方法,對於這些字節,程序應該使用未編碼的字節流進行寫入。
與 PrintStream
類不同,如果啟用了自動刷新,則只有在調用 println、printf 或 format 的其中一個方法時才可能完成此操作,而不是每當正好輸出換行符時才完成。這些方法使用平台自有的行分隔符概念,而不是換行符。
此類中的方法不會拋出 I/O 異常,盡管其某些構造方法可能拋出異常。客戶端可能會查詢調用 checkError()
是否出現錯誤。
構造方法表
PrintWriter(File file) 使用指定文件創建不具有自動行刷新的新 PrintWriter。 |
PrintWriter(File file, String csn) 創建具有指定文件和字符集且不帶自動刷行新的新 PrintWriter。 |
PrintWriter(OutputStream out) 根據現有的 OutputStream 創建不帶自動行刷新的新 PrintWriter。 |
PrintWriter(OutputStream out, boolean autoFlush) 通過現有的 OutputStream 創建新的 PrintWriter。 |
PrintWriter(String fileName) 創建具有指定文件名稱且不帶自動行刷新的新 PrintWriter。 |
PrintWriter(String fileName, String csn) 創建具有指定文件名稱和字符集且不帶自動行刷新的新 PrintWriter。 |
PrintWriter(Writer out) 創建不帶自動行刷新的新 PrintWriter。 |
PrintWriter(Writer out, boolean autoFlush) 創建新 PrintWriter。 |
printwriter類的方法表
PrintWriter |
append(char c) 將指定字符添加到此 writer。 |
PrintWriter |
append(CharSequence csq) 將指定的字符序列添加到此 writer。 |
PrintWriter |
append(CharSequence csq, int start, int end) 將指定字符序列的子序列添加到此 writer。 |
boolean |
checkError() 如果流沒有關閉,則刷新流且檢查其錯誤狀態。 |
protected void |
clearError() 清除此流的錯誤狀態。 |
void |
close() 關閉該流並釋放與之關聯的所有系統資源。 |
void |
flush() 刷新該流的緩沖。 |
PrintWriter |
format(Locale l, String format, Object... args) 使用指定格式字符串和參數將一個格式化字符串寫入此 writer 中。 |
PrintWriter |
format(String format, Object... args) 使用指定格式字符串和參數將一個格式化字符串寫入此 writer 中。 |
void |
print(boolean b) 打印 boolean 值。 |
void |
print(char c) 打印字符。 |
void |
print(char[] s) 打印字符數組。 |
void |
print(double d) 打印 double 精度浮點數。 |
void |
print(float f) 打印一個浮點數。 |
void |
print(int i) 打印整數。 |
void |
print(long l) 打印 long 整數。 |
void |
print(Object obj) 打印對象。 |
void |
print(String s) 打印字符串。 |
PrintWriter |
printf(Locale l, String format, Object... args) 使用指定格式字符串和參數將格式化的字符串寫入此 writer 的便捷方法。 |
PrintWriter |
printf(String format, Object... args) 使用指定格式字符串和參數將格式化的字符串寫入此 writer 的便捷方法。 |
void |
println() 通過寫入行分隔符字符串終止當前行。 |
void |
println(boolean x) 打印 boolean 值,然后終止該行。 |
void |
println(char x) 打印字符,然后終止該行。 |
void |
println(char[] x) 打印字符數組,然后終止該行。 |
void |
println(double x) 打印雙精度浮點數,然后終止該行。 |
void |
println(float x) 打印浮點數,然后終止該行。 |
void |
println(int x) 打印整數,然后終止該行。 |
void |
println(long x) 打印 long 整數,然后終止該行。 |
void |
println(Object x) 打印 Object,然后終止該行。 |
void |
println(String x) 打印 String,然后終止該行。 |
protected void |
setError() 指示已發生錯誤。 |
void |
write(char[] buf) 寫入字符數組。 |
void |
write(char[] buf, int off, int len) 寫入字符數組的某一部分。 |
void |
write(int c) 寫入單個字符。 |
void |
write(String s) 寫入字符串。 |
void |
write(String s, int off, int len) 寫入字符串的某一部分。 |
PrintWriter類用法,代碼示例:
1 import java.io.BufferedReader; 2 import java.io.FileInputStream; 3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.io.InputStreamReader; 8 import java.io.OutputStream; 9 import java.io.PrintWriter; 10 11 12 public class javaTest { 13 14 public static void main(String[] args) throws IOException { 15 /* 16 * 創建輸出流,將信息寫入指定的文件中 17 */ 18 OutputStream os=new FileOutputStream("C:\\Users\\qinghuang\\Desktop\\io1.txt"); 19 PrintWriter pw=new PrintWriter(os); 20 pw.write("小帥哥"); 21 pw.append(" 你真帥~"); 22 pw.println("我稀罕你"); 23 pw.write("我愛你"); 24 //輸出流需要在讀取之前關閉保存 25 pw.close(); 26 os.close(); 27 28 /* 29 * 創建輸入流,將信息讀到控制台 30 */ 31 InputStream is=new FileInputStream("C:\\Users\\qinghuang\\Desktop\\io1.txt"); 32 InputStreamReader isr=new InputStreamReader(is); 33 BufferedReader br=new BufferedReader(isr); 34 35 String info=null; 36 info=br.readLine(); 37 while(info!=null){ 38 System.out.println(info); 39 info=br.readLine(); 40 } 41 br.close(); 42 isr.close(); 43 is.close(); 44 } 45 }
運行結果:
1 小帥哥 你真帥~我稀罕你 2 我愛你
io2.txt文檔中為:
小帥哥 你真帥~我稀罕你
我愛你
分析:從上述的代碼實現中可以看出,PrintWriter類對象的write()、print()、append()方法實現最后結果相同,只是在調用的時候其返回值有所不同,可根據需要進行靈活的選擇,其他沒有看出有什么不同。(這個結論通過查詢jdk api文檔和程序測試得來的)。另一個注意:一般I/O流的輸入方和輸出方的類是成對出現的,但是PrintWriter不是,並沒有與之對應的類。