java基础类库——打印流使用(十三)

打印流使用

1.1 打印流设计思想
如果要进行数据的输入用InputStream,输出使用OutputStream,可是在现实环境中会发现很多问题:
InputStream和OutputStream只能受限于byte[]数据类型,本次先解决输出流的问题
实现int、String、double数据类型输出
范例1:

import java.io.*;

class PrintUtil{
    private OutputStream output;
    public PrintUtil(OutputStream output){
        this.output = output;
    }
    public void print(String str){
        try {
            this.output.write(str.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void print(int i){
        this.print(String.valueOf(i));
    }
    public void print(double d){
        this.print(String.valueOf(d));
    }
    public void println(String str){
        this.print(str + "\n");
    }
    public void close(){
        try {
            output.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
public class PrintDemo {
    public static void main(String[] args) throws Exception {
        PrintUtil pu = new PrintUtil(new FileOutputStream(
                new File("F:"+File.separator+File.separator+"java8"+File.separator+"file"+File.separator+"testmy.txt")));
        pu.println("hello world");
        pu.print("张老三");
        pu.print("性别:");
        pu.print(1);
        pu.print("工资:");
        pu.print(1.1);
        pu.close();
    }
}

hello world
张老三性别:1 工资:1.1

本质没有离开OutputStream类的原始支持,只是将这个功能封装了一个工具类

1.2 打印流
在java.io 包中提供了两个打印流,PrintStream(字节打印流)、PrintWriter(字符打印流)
PrintStream类
定义:public class PrintStream extends FilterOutputStream implements Appendable, Closeable
构造方法:public PrintStream(OutputStream out)
在这里插入图片描述

以PrintStream的结构分析,这个结构非常类似于代理设计模式,但是与代理模式有两点差别:
1.代理设计模式必须与接口的设计为主;
2.代理模式执行的时候调用的依然是父接口中定义的方法;
而在PrintStream类中使用print()或者println()方法要比OutputStream类的write()方法更加方便,适合各种数据类型的输出,所以这样的设计属于装饰设计模式。

范例:使用PrintStream类简化范例1

public class PrintDemo {
    public static void main(String[] args) throws Exception {
        PrintStream pu = new PrintStream(new FileOutputStream(
                new File("F:"+File.separator+File.separator+"java8"+File.separator+"file"+File.separator+"testmy.txt")));
        pu.println("hello world-PrintStream");
        pu.print("张老三-PrintStream");
        pu.print("性别-PrintStream:");
        pu.print(1);
        pu.print("工资-PrintStream:");
        pu.print(1.1);
        pu.close();
    }
}

如果在以后需要进行内容的输出操作,那么使用最方便的一定是打印流,如果程序要输出文字信息,就使用打印流。

PrintWriter类
定义:public class PrintWriter extends Writer
构造方法:public PrintWriter (Writer out)
构造方法:public PrintWriter(OutputStream out)

1.3 格式化输出
PrintStream类在JDK1.5的时候增加了一个新的功能——格式化输出:public PrintStream printf(String format, Object … args);
如果要进行格式化,可以使用这些标记:字符串(%s)、整数(%d)、小数(%m.nf)
范例:格式化输出

public class PrintDemo {
    public static void main(String[] args) throws Exception {
        PrintStream pu = new PrintStream(new FileOutputStream(
                new File("F:"+File.separator+File.separator+"java8"+File.separator+"file"+File.separator+"testmy.txt")));
        String name ="小王";
        int age = 18;
        double scope = 59.362154;
        pu.printf("姓名:%s,年龄:%d,分数:%5.2f",name,age,scope);
        pu.close();
    }
}
姓名:小王,年龄:18,分数:59.36

补充:JDK1.5之后String也发生了改变,提供了格式化字符串的输出操作。
方法:public static String format(String format, Object… args)

范例:格式化字符串

public class PrintDemo {
    public static void main(String[] args) throws Exception {
       // PrintStream pu = new PrintStream(new FileOutputStream(
            //    new File("F:"+File.separator+File.separator+"java8"+File.separator+"file"+File.separator+"testmy.txt")));
        String name ="小王";
        int age = 18;
        double scope = 59.362154;
        System.out.print(String.format("姓名:%s,年龄:%d,分数:%5.2f",name,age,scope));
       // pu.close();
    }
}
姓名:小王,年龄:18,分数:59.36

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值