printwriter类——可用于多种输出对象,具有多种输出方式

来源:互联网 发布:第七封印知乎 编辑:程序博客网 时间:2024/05/21 09:33

PrintWrite类

   PrintWrite类本质上是PrintStream的面向字符版本,实现了Appendable、AutoCloseable、Closeable以及Flushable接口。PrintWrite类具有几个构造函数。如下所示:

   PrintWriter(OutputStream outputStream)

   PrintWriter(OutputStream outputStream,boolean flushOnNewline)

   PrintWriter(Writer outputStream)

   PrintWriter(Writer outputStream,boolean flushOnNewline)

   其中,OutputStream指定了将接收输出的打开的OutputStream对象。flushOnNewline参数控制每次调用println()、print()、或format()是否自动刷新输出缓存。如果flushOnNewline为true,就自动刷新;如果为false就不自动刷新。没有指定flushOnNewline参数的构造函数不自动刷新。

下面这几个构造函数为构造向文件中写入输出的PrintWrite对象提供了简便方法:

   PrintWriter(File outputFile) throws FileNotFoundException

   PrintWriter(File outputFile,String charSet)

      throws FileNotFoundException,UnsupportedEncodingException

   PrintWriter(String outputFileName) throws FileNotFoundException

   PrintWriter(String outputFileName,String charSet)

      throws FileNotFoundException,UnsupportedEncodingException

   这些构造函数允许从File对象或根据指定的文件名创建PrintWrite对象。对于每种形式,都会自动创建文件。所有之前创建的同名文件都会被销毁。一旦创建PrintWrite对象,就将所有输出定向到指定的文件。可以通过charSet传递的名称来指定文件编码。

   PrintWrite为所有类型(包括Object)都支持print()和println()方法。如果参数不是基本类型,那么PrintWrite方法会调用对象的toString方法,然后输出结果。

   PrintWrite还支持printf()方法,它的工作方式与前面介绍的PrintWrite类中的printf()方法相同。该方法允许指定数据的精确格式。下面是在PrintWrite类中声明的printf()方法:

   PrintWriter printf(String fmtString,Object...args)

   PrintWriter printf(Locale loc,String fmtString,Object...args)

   第一个版本使用fmtString指定的格式将args写入到标准输出,使用默认地区。第二个版本允许指定地区。这两个版本都返回调用PrintWrite对象

  PrintWrite类也支持format()方法,该方法具有以下一般形式:

  PrintWriter format(String fmtString,Object...args)

  PrintWriter format(Locale loc,String fmtString,Object...args)

format()方法的工作方式与printf()方法完全类似。

下面是PrintWrite类的一些具体用法,如下所示:


 

注意:System.out属于OutputStream类,用于后台程序输出

下面是总结的一些具体用法:

import java.io.*;class ObjectDemo1{String s="这是被打印的对象";public String toString(){//System.out.println(s);//在控制台输出显示return s;//返回描述对象的字符串}}class PrintWriterDemo {static void p(PrintWriter pw){char c[]={'这','是','子','符','数','组'};String s="这是要写入的字符串";pw.print(new ObjectDemo1()); pw.println();pw.println(2>3); //打印boolean值pw.println(c);//打印字符数组pw.println(1.2345678);//打印精度浮点数pw.println(100); //打印一个整型数pw.println("这是要打印的字符串"); //打印一个字符串pw.printf("姓名:%s\t性别:%c\t年龄:%d\t出生日期:%d\t","刘勋",'男',21,1993); pw.println();//格式化打印pw.format("姓名:%s\t性别:%c\t年龄:%d\t出生日期:%d\t","刘勋",'男',21,1993); pw.println();//与上例相同pw.write("这是要写入的内容");  pw.println();//写入字符串pw.write(c,1,4); pw.println();//写入字符数组的某一部分pw.write(s,2,6);//写入字符串中的某一部分}  public static void main(String[] args) throws IOException{  File f=new File("c:1.txt");  FileWriter f1=new FileWriter("c:2.txt");try(  PrintWriter pw1=new PrintWriter(f,"gbk");//f是File对象  PrintWriter pw2=new PrintWriter(System.out);//System.out是OutputStream子类,在运行结果中进行显示  PrintWriter pw3=new PrintWriter(f1);//FileWriter是继承自Writer类  PrintWriter pw4=new PrintWriter("c:3.txt","gbk");//按照字符集写入文件名指定的文件){  p(pw1);  p(pw2);  p(pw3);  p(pw4);}catch(IOException e){System.out.println("I/O Error: "+e);}  }}

程序输出结果如下:

文件1,2,3的内容如下所示:

文件3的内容与以上一样,在此不在截图

0 0
原创粉丝点击