打印流
- OutputStream 类所提供的的 write() 方法只适用于输出字节数组,打印流解决了输出字符、数字、日期的问题;
- 包括两种打印流:PrintStream(字节打印流)、PrintWriter(字符打印流);
1. PrintStream 类
- 主要提供了一系列 print() 和 println(),可以将基本数据类型转换为字符串输出,当然也有其他的方法比如 printf() 方法;
- 对于基本类型 print() 和 println() 会先将它们转化为字符串的形式再输出,对于非基本数据类型的对象,print() 和 println() 会先调用对象的 toString() 方法,然后输出 toString() 返回的字符串;
println() = print("\n");
;
- 之前用到的 System.out.println 中的 System.out 就是 PrintStream 类的一个实例对象;
- java.io.PrintStream,详见:Class PrintStream;
构造方法 |
说明 |
PrintStream(OutputStream out) |
自动刷新行 |
PrintStream(OutputStream out, boolean autoflush) |
自动刷新行,autoflush 控制在遇到换行符(\n)时是否清空缓冲区 |
PrintStream(OutputStream out, boolean autoflush, String encoding) |
自动刷新行,encoding 指定编码方式 |
PrintStream(File file) |
无自动刷新行 |
PrintStream(File file, String csn) |
无自动刷新行,csn 是 charset(字符集) |
PrintStream(String fileName) |
无自动刷新行 |
PrintStream(String fileName, String csn) |
无自动刷新行 |
2. PrintWriter 类
构造方法 |
说明 |
PrintWriter(OutputStream out) |
无自动刷新行 |
PrintWriter(OutputStream out, boolean autoFlush) |
自动刷新行 |
PrintWriter(Writer out) |
无自动刷新行 |
PrintWriter(Writer out, boolean autoFlush) |
自动刷新行 |
PrintWriter(File file) |
无自动刷新行 |
PrintWriter(File file, String csn) |
无自动刷新行 |
PrintWriter(String fileName) |
无自动刷新行 |
PrintWriter(String fileName, String csn) |
无自动刷新行 |
- PrintWriter 只有在 autoflush 模式下才会自动清空缓冲区;
- 相对于 PrintStream,PrintWriter 最有利的是 println() 方法的行为:Windows 下的文本换行是 \r\n,而 Linux 下的文本换行是 \n,PrintWriter 的 println() 方法可以根据不同的操作系统生成相应的换行符;
a. 向屏幕输出
import java.io.PrintWriter;
public class Test {
public static void main(String args[]) {
PrintWriter out = null;
out = new PrintWriter(System.out);
out.print("Hello World!");
out.close();
}
}
b. 向文件输出
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Test {
public static void main(String args[]) {
PrintWriter out = null;
File f = new File("C:\\Users\\80626\\Desktop\\1.txt");
try {
out = new PrintWriter(new FileWriter(f));
} catch (IOException e) {
e.printStackTrace();
}
out.print("Hello World!" + "\r\n");
out.close();
}
}