PrintWriter

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(),在流中添加信息。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值