构造方式之一:PrintWriter (File file/String fileName, String csn)
指定文件或者文件名称,创建一个不具有自动刷新功能的PrintWriter
从构造方法可以看出,PrintWriter
的第一个作用是将数据打印到到文件,在利用该构造方法时,要注意参数传入的两个要点:
构造方式之二:public PrintWriter(OutputStream out,boolean autoFlush)
通过现有的 OutputStream
创建新的PrintWriter
自动刷新为可选参数
方式二创建必要的中间 OutputStreamWriter
,后者使用默认字符编码将字符转换为字节。因此创建出来的Printwriter
对象兼有转换跟输出的功,可以将字节流对象在底层转换为字符流对象,然后打印。
构造方式之三:PrintWriter(Writer out, boolean autoFlush)
传入一个Writer对象, 创建新 PrintWriter。与方式二唯一的区别:传入参数是字符流,不需要调用底层的转换流,直接可以包装为打印流。
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
被覆盖了。
(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(),在流中添加信息。