简介
打印流是 java.io 包中输出信息最方便的一个类,主要包括字节打印流(PrintStream) 和字符打印流(PrintWriter)。打印流可以打印出任何数据类型,例如小数、整数、字符串等。
OutputStream有缺陷只能输入String类型,所有才有了打印流。
PrintStream类的继承与构造方法:
类的继承:
java.lang.Object
|-java.io.OutputStream
|-java.io.FilterOutputStream
|-java.io.PrintStream
构造方法:public PrintStream (OutputStream out)
。
从 PrintStream 类定义的构造方法可以清楚地发现,PrintStream 可以直接接受 OutputStream 类的实例,这是因为与 OutputStream 类相比,PrintStream 类可以更加方便的输出数据,这就好像将类 OutputStream 重新包装了一下,使其输出更加方便。
代码实例
打印流
把一个输出流的实例传递到打印流(PrintStrem 类就是 OutPutStream输出流的子类)后,可以更加方便的输出,也就说说,打印流把输出流重新装饰了一下,这样子的设计模式称为装饰设计模式。
自定义打印流实现
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
// 自定义一个打印流的实现
class PrintUtil {
private OutputStream output;
// 构造方法
public PrintUtil(OutputStream output) {
this.output = output;
}
public void print(String x) {
try {
this.output.write(x.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
public void print(int x) {
print(String.valueOf(x));
}
public void print(double x) {
print(String.valueOf(x));
}
public void println(String x) {
print(x.concat("\n"));
}
public void println(int x) {
println(String.valueOf(x));
}
public void println(double x) {
println(String.valueOf(x));
}
}
public class Demo {
public static void main(String[] args) throws Exception {// 此处直接抛出错误
PrintUtil pu = new PrintUtil(
new FileOutputStream(new File("e:" + File.separator + "demo" + File.separator + "my.txt")));
pu.println(13.6);
pu.println(11 + 11);
pu.println(11.1 + 11.1);
pu.println("打印流");
pu.print("装饰设计模式");
}
}
使用打印流实现
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Demo {
public static void main(String[] args) throws Exception {// 此处直接抛出错误
PrintStream ps = new PrintStream(
new FileOutputStream(new File("e:" + File.separator + "demo" + File.separator + "my.txt")));
ps.println("Java打印流");
ps.print("打印流是属于装饰设计模式");
ps.println(11.6 + 11.89);
ps.print(10 + 30);
ps.close();
}
}
JDK 1.5 之后增强的打印流
从 JDK 1.5 之后,Java 对 PrintStream 类进行了扩充,在里面增加了格式化输出的方式,此功能可以直接使用 printf() 方法来完成操作。但是在进行格式化输出时,需要制定器输出的数据类型。
字符 | 描述 |
---|---|
%s | 表示内容为字符串 |
%d | 表示内容为整数 |
%f | 表示内容为小数 |
%c | 表示内容为字符 |
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Demo {
public static void main(String[] args) throws Exception {
String name = "测试";
int age = 19;
double score = 60.60;
PrintStream ps = new PrintStream(
new FileOutputStream(new File("e:" + File.separator + "demo" + File.separator + "my.txt")));
// 姓名:测试,年龄:19,成绩:60.60
ps.printf("姓名:%s,年龄:%d,成绩:%5.2f", name, age, score);
ps.close();
}
}
补充 String类的 format() 方法
方法定义:public static String format(String format,Object ... args)
public class Demo {
public static void main(String[] args) {
String name = "伊森";
int age = 19;
double score = 60.60;
String str = String.format("姓名:%s,年龄:%d,成绩:%5.2f", name, age, score);
// 姓名:伊森,年龄:19,成绩:60.60
System.out.println(str);
}
}