PrintWriter

来源:互联网 发布:淘宝千里眼在哪买 编辑:程序博客网 时间:2024/04/27 00:13

PrintWriter

构造方法

构造方式之一:PrintWriter (File file/String fileName, String csn)指定文件或者文件名称,创建一个不具有自动刷新功能的PrintWriter

从构造方法可以看出,PrintWriter的第一个作用是将数据打印到到文件,在利用该构造方法时,要注意参数传入的两个要点:

  • 第一,必须指定定文件位置。
  • 第二,不具备自动刷新功能。
  • 第二,字符集为可选参数,如若不填,Java将按照操作系统自动选择字符集。

构造方式之二:public PrintWriter(OutputStream out,boolean autoFlush)通过现有的 OutputStream创建新的PrintWriter自动刷新为可选参数

方式二创建必要的中间 OutputStreamWriter,后者使用默认字符编码将字符转换为字节。因此创建出来的Printwriter对象兼有转换跟输出的功,可以将字节流对象在底层转换为字符流对象,然后打印。

构造方式之三:PrintWriter(Writer out, boolean autoFlush)

传入一个Writer对象, 创建新 PrintWriter。与方式二唯一的区别:传入参数是字符流,不需要调用底层的转换流,直接可以包装为打印流。

Writer方法

void write(String s, int off,int len) // 写入字符串。void write(char[] buf, int off, int len) //写入字符数组void write(int c) //写入单个字符。 

write方法写入,会覆盖文件原来的内容。其中的写入字符串(或字符数组)的后两个参数为可选参数,可自定义起始位置和长度,截取要写入的字符串(或字符数组)的一部分。参数为(int c)的方式比较特殊,这是的C值对应字符的编码,这个方法的含义是输入字符的编码,输出对应的字符。如下:

public class Print {    public static void main(String[] args) throws Exception {        PrintWriter pw = new PrintWriter("D:\\5.txt","utf-8");        pw.write(99);        pw.flush();    }}

在D盘的5.txt文件中可以看到字符c,字符c对应的编码为99。当将输出的内容改为pw.write(97);时,5.txt文件中只显示了97对应的字符a,原来的字符c被覆盖了。

append方法

(API文档直接COPY过来的)方法摘要:PrintWriter append(char c) 将指定字符添加到此 writer。 PrintWriter append(CharSequence csq) 将指定的字符序列添加到writer。 PrintWriter append(CharSequence csq, int start, int end) 将指定符序列的子序列添加到此 writer。 

字符序列是什么?就是字符串(为什么不直接翻译成字符串,这个翻译成功,使得看API文档的同学认知负荷翻倍,英语能力显著提升,怪不得程序员都头发很少)。

拉回远飘的思绪,继续盐焗append方法。看代码:

public class Print {    public static void main(String[] args) throws Exception {        PrintWriter pw = new PrintWriter("D:5.txt","utf-8");        pw.append("bbbb");        pw.flush();    }}

执行完这段代码后,在相应的5.txt文件上会看到bbbb,原来的内容也同样会被覆盖掉。这里要注意的是append方法返回的是PrintWriter流对象,可以看做是追加。如下:

小结

PrintWriter类最大的特点是,他的pint()方法可以接受任意类型的数据,然后把他们以字符串的形式输出。

PrintWriter兼具转化流与输出流的功能,可以将字节流转换成字符流输出。

特殊方法append(),在流中添加信息。

原创粉丝点击