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

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类的一些具体用法,如下所示:

printwriter类——可用于多种输出对象,具有多种输出方式_第1张图片

printwriter类——可用于多种输出对象,具有多种输出方式_第2张图片


 

注意: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);
	}
  }
}

程序输出结果如下:

printwriter类——可用于多种输出对象,具有多种输出方式_第3张图片

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

printwriter类——可用于多种输出对象,具有多种输出方式_第4张图片

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

你可能感兴趣的:(printwriter类——可用于多种输出对象,具有多种输出方式)