向文本输出流打印对象的格式化表示形式。此类实现在 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 PrintWriterTest { 13 14 public static void main(String[] args) throws IOException { 15 /* 16 * 创建输出流,将信息写入指定的文件中 17 */ 18 OutputStream os=new FileOutputStream("C:\Users\Administrator\Desktop\新建文本文档.txt"); 19 PrintWriter pw=new PrintWriter(os); 20 pw.write("How are you ? "); 21 pw.append("i am fine "); 22 pw.println("and you ? "); 23 pw.write(" me too "); 24 25 //输出流需要在读取之前关闭保存 26 pw.close(); 27 os.close(); 28 29 /* 30 * 创建输入流,将信息读到控制台 31 */ 32 InputStream is=new FileInputStream("C:\Users\Administrator\Desktop\新建文本文档.txt"); 33 InputStreamReader isr=new InputStreamReader(is); 34 BufferedReader br=new BufferedReader(isr); 35 36 String info=null; 37 info=br.readLine(); 38 while(info!=null){ 39 System.out.println(info); 40 info=br.readLine(); 41 } 42 br.close(); 43 isr.close(); 44 is.close(); 45 }
结果:
1 How are you ? i am fine and you ? 2 me too
BufferedWriter和PrintWriter都可以写入数据,但BufferedWriter没有相关的格式化的方法,而PrintWriter可以在写入同时对写入的数据进行格式化。