随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

打印方法的设计思想:

提高已有类的功能(装饰设计模式)。

例如:OutputStream是唯一可以实现输出操作的标准类,所以应该以其为核心根本,但是这个类输出的操作有限,不方便进行各种类型的输出操作,

那么就对它做出了一层包装(没有脱离其本质,但是功能更加强大,就像钢铁侠本质是人,但是穿上了装甲变得更加强大了,能做的事也就更多了),如下代码:

 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;

class PrintUtil implements AutoCloseable{    // 常用的打印输出类
    private OutputStream outputStream;  // 字节输出流

    public PrintUtil(OutputStream outputStream) {   // 通过构造方法传入的参数,以决定输出的位置
        this.outputStream = outputStream;
    }

    public void print(long num){
        this.print(String.valueOf(num));
    }

    public void println(long num){
        this.println(String.valueOf(num));
    }

    public void print(String str){
        try {
            this.outputStream.write(str.getBytes(StandardCharsets.UTF_8));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void println(String str){
        this.print(str + "\r\n");
    }

    @Override
    public void close() throws Exception {
        this.outputStream.close();
    }
}
public class MAIN {
    public static void main(String[] args) throws Exception{
        File file = new File("D:" + File.separator + "Demo_2_15" + File.separator + "Copy.txt");
        PrintUtil pu = new PrintUtil(new FileOutputStream(file));
        pu.println("姓名:张三");
        pu.print("年龄:");
        pu.println(79);
        pu.close();
    }
}

 

以上代码以OutputStream为核心,扩展其打印的功能。

打印流:

以上可以发现OutputStream的不足,那么设计者就弥补了这一点,设计了打印流。

PrintStream(JDK 1.0):

PrintWriter(JDK 1.1):

public class PrintStream extends FilterOutputStream implements Appendable,Closeable;

 

public class PrintWriter extends Writer;

public PrintStream(OutputStream out);

 

public PrintWriter(OutputStream out);

public PrintWriter(Writer out);

 

 

使用PrintWriter实现数据的输出操作; 

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;

public class MAIN {
    public static void main(String[] args) throws Exception{
        File file = new File("D:" + File.separator + "Demo_2_15" + File.separator + "Copy.txt");
        PrintWriter pu = new PrintWriter(new FileOutputStream(file));
        pu.println("姓名:张三");
        pu.print("年龄:");
        pu.println(79);
        pu.close();
    }
}

 

 

 从JDK 1.5开始PrintWriter里面追加有格式化输出的操作支持:

public PrintWriter printf (String format,0bject... args);

格式化输出:

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;

public class MAIN {
    public static void main(String[] args) throws Exception{
        File file = new File("D:" + File.separator + "Demo_2_15" + File.separator + "Copy.txt");
        PrintWriter pu = new PrintWriter(new FileOutputStream(file));
        // 格式化输出
        String name = "小强子";
        int age = 15;
        double salary = 4000.43564298;
        pu.printf("姓名:%s , 年龄:%d , 工资:%1.2f",name,age,salary);
        pu.close();
    }
}

 

 

 比起直接使用OutputStream类,那么使用PrintWriter或者PrintStream类的操作会更加的简单。

以后只要是程序进行内容输出的时候全部使用打印流。

 

posted on 2022-02-19 15:14  时间完全不够用啊  阅读(113)  评论(0编辑  收藏  举报