打印方法的设计思想:
提高已有类的功能(装饰设计模式)。
例如: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类的操作会更加的简单。
以后只要是程序进行内容输出的时候全部使用打印流。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)