zoukankan      html  css  js  c++  java
  • 打印流

      打印流主要解决的就是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+"
    ");
    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 }
  • 相关阅读:
    学习lua(一) 认识了解lua
    Lua For Windows 环境配置及使sciTE支持中文,使用editplus作为编辑工具
    Lua代码实例()
    Lau实例代码(二)
    (转)Nios II的Boot过程分析(I)
    Altera和Xilinx的参考设计资源
    (转)如何在FPGA设计环境中加时序约束
    (转)FPGA时序约束的几种方法
    (转)Nios ii设备管理分析
    (转)Nios II的Boot过程分析(II)
  • 原文地址:https://www.cnblogs.com/Tony98/p/10541150.html
Copyright © 2011-2022 走看看