打印流使用
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