一、PrintStream
public class PrintStream extends FilterOutputStream
FilterOutputStream extends OutputStream
1、PrintStream特点:
- 只负责数据的输出,不负责数据的读取
- 与其他输出流不同,PrintStream永远不会抛出IOException
- 有特有的方法print、println
void print(任意类型的值)
void println(任意类型的值)
PrintStream中 println的源码如下。 public void println(String x) { synchronized (this) { print(x); newLine(); } }println中调用了方法newLine()
newline是BufferedWriter字符缓冲输出流特有的成员方法:
void newline();会根据不同的操作系统,获取不同的行分割符。换行
二、PrintWriter
public class PrintWriter extends Writer
1、PrintStream与PrintWriter 区别:
PrintStream
打印的所有字符都使用平台的默认字符编码转换为字节。
在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter
类。
(可以通过下面代码清晰看出:
ps.write("我记得你"); 报错!!
pw.write("你好"); 没有报错
)。
public static void main(String[] args) throws FileNotFoundException {
PrintStream ps = new PrintStream("day0220-zjode\\src\\ps.txt");
//System.setOut方法改变输出语句的目的地改为参数中传递的打印流的目的地
System.setOut(ps);
ps.write(97); //a
// ps.write("我记得你"); 报错!!
ps.println("你好");
ps.println(98); //98
ps.close(); //PrintStream可以自动刷新;
//这意味着可在写入 byte 数组之后自动调用 flush 方法。
PrintWriter pw = new PrintWriter("day0220-zjode\\src\\pw.txt");
pw.write(97); //a
pw.write("你好");
pw.println("你好");
pw.println(98); //98
pw.close(); //PrintWriter里不写close,打开b.txt文件里面就不会看到内容
//或者可以加上pw.flush() 但是要养成关闭流的习惯
}
三、注意:
如果使用继承自父类的write方法写数据,那么查看数据的时候会查询编码表:97-->a
如果使用自己特有的方法print\println方法写数据。写的数据原样输出:97-->97