打印流
- OutputStream 类所提供的的 write() 方法只适用于输出字节数组,打印流解决了输出字符、数字、日期的问题;
- 包括两种打印流:PrintStream(字节打印流)、PrintWriter(字符打印流);
1. PrintStream 类
- 主要提供了一系列 print() 和 println() 方法(即平时我们在控制台打印输出的方法),可以将基本数据类型转换为字符串输出,当然也有其他的方法比如 printf() 方法;
println() = print("\n");
;- 之前用到的 System.out.println 中的 System.out 就是 PrintStream 类的一个实例对象;
- 对于基本类型 print() 和 println() 会先将它们转化为字符串的形式再输出,对于非基本数据类型的对象,print() 和 println() 会先调用对象的 toString() 方法,然后输出 toString() 返回的字符串。总之一句话:“看到即所得”;
- java.io.PrintStream,详见:Class PrintStream;
a. 构造方法
构造方法 | 说明 |
---|
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) | 无自动刷新行 |
- 构造举例,代码如下:
PrintStream ps = new PrintStream("ps.txt");
b. 向屏幕和文件输出字符串
import java.io.IOException;
import java.io.PrintStream;
public class Test {
public static void main(String[] args) throws IOException {
System.out.println(97);
PrintStream ps = new PrintStream("C:\\Users\\80626\\Desktop\\1.txt");
System.setOut(ps);
System.out.println(97);
}
}
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();
}
}