打印流

  打印流主要解决的就是OutputStream的设计缺陷,属于OutputStream功能的加强版。如果你现在不是操作的二进制数据,向终端发送消息:

    缺点一:所有的数据必须变为字节数组,

    缺点二:如果要输出的是int double等类型就不方便了

打印流

  打印流的设计目的主要是解决OutputStream的设计问题,其本质不可能脱离OutputStream

范例:打印流模型

 

 1 package cn.Tony.demo;
 2 
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.io.OutputStream;
 7 
 8 
 9 class PrintUtil{    //自己编写一个类,希望这个类可以提供更多的输出支持
10     private OutputStream output;
11     public PrintUtil(OutputStream output) {//由外部决定输出的位置
12         this.output=output;
13     }
14     public void print(String str) {
15         try {//核心功能
16             output.write(str.getBytes());
17         } catch (IOException e) {
18             // TODO Auto-generated catch block
19             e.printStackTrace();
20         }
21     }
22     public void println(String str) {
23         this.print(str+"\r\n");
24     }
25     public void print(int data) {
26         this.print(String.valueOf(data));
27     }
28     public void println(int data) {
29         this.println(String.valueOf(data));
30     }
31     public void print(double data) {
32         this.print(String.valueOf(data));
33     }
34     public void println(double data) {
35         this.println(String.valueOf(data));
36     }
37     public void close() {
38         try {
39             this.output.close();
40         } catch (IOException e) {
41             // TODO Auto-generated catch block
42             e.printStackTrace();
43         }
44     }
45 }
46 
47 public class TestDemo{
48     public static void main(String[] args) throws Exception {
49         PrintUtil pu=new PrintUtil(new FileOutputStream(new File("D:"+File.separator+"IO"+File.separator+"data.txt")));
50         pu.print("姓名:");
51         pu.println("啊于!");
52         pu.println(1+10);
53         pu.println(1.2+10.3);
54         pu.close();
55     }
56 }

 

   java中有提供的专门打印流处理类:PrintStream PrintWriter 

  打印流有字节打印流:PrintStream 字符打印流:PrintWriter 以后使用PrintWriter的几率很高。但是这两者使用形式是相同的。

  此时的感觉很像代理设计模式,但是代理设计有如下特点:

    代理是以接口为使用原则的设计模式;

    最终用户可以调用的方法一定是接口所定义的方法

  打印流的设计属于装饰设计模式,核心依然是某一个类的功能,但是为了得到更好的操作效果,让其支持的功能更多一些, 

范例:使用打印流

 1 package cn.Tony.demo;
 2 
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 import java.io.PrintWriter;
 6 
 7 public class TestDemo{
 8     public static void main(String[] args) throws Exception {
 9         PrintWriter pu=new PrintWriter(new FileOutputStream(new File("D:"+File.separator+"IO"+File.separator+"data.txt")));
10         pu.print("姓名:");
11         pu.println("啊于!");
12         pu.println(1+10);
13         pu.println(1.2+10.3);
14         pu.close();
15     }
16 }

  以后的开发做之中一定会用到打印流。

格式化输出

  C语言有一个printf()函数,这个函数在输出的时候可以使用一些占位符,例如:字符串(%s),数子(%d)小数(m.nf)字符(%c)从JDK1.5开始PrintStream类中也追加同样的方式,使用的printf()方法。

    格式化输出:public PrintWriter printf(String format,Object... args)

范例:观察格式化输出

 1 package cn.Tony.demo;
 2 
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 import java.io.PrintWriter;
 6 
 7 public class TestDemo{
 8     public static void main(String[] args) throws Exception {
 9          String name="顾里鸭";
10          int age=20;
11          double salary=-100000.5584151615;
12         PrintWriter pu=new PrintWriter(new FileOutputStream(new File("D:"+File.separator+"IO"+File.separator+"data.txt")));
13         pu.printf("姓名:%s,年龄:%d,工作:%8.2f",name,age,salary);
14         pu.close();
15     }
16 }

  同时在String类里面也追加有一个格式化字符串方法

    格式化字符串:public static String format(Locale l,String format,Object... args)

范例:格式化字符串

 1 package cn.Tony.demo;
 2 
 3 public class TestDemo{
 4     public static void main(String[] args) throws Exception {
 5          String name="顾里鸭";
 6          int age=20;
 7          double salary=-100000.5584151615;
 8         System.out.println( String.format("姓名:%s,年龄:%d,工作:%8.2f",name,age,salary));
 9     }
10 }

 

posted on 2019-03-16 11:04  朽木zidiao  阅读(229)  评论(0编辑  收藏  举报

导航