一、打印流

打印流不能读,只能写,所以打印流只有输出流,没有输入流。

二、字节打印输出流——PrintStream


public class PrintStreamDemo1 {
public static void main(String[] args) throws FileNotFoundException {
// 字节打印流
PrintStream ps = new PrintStream(new FileOutputStream("chapter18\\src\\com\\testdemo\\myprintstream\\a.txt"), true, StandardCharsets.UTF_8);
// PrintStream ps = new PrintStream(new FileOutputStream("chapter18\\src\\com\\testdemo\\myprintstream\\a.txt"), true, Charset.forName("UTF-8"));
ps.println(97); // 写出 + 自动刷新 + 自动换行
ps.print(true);
ps.println();
ps.printf("%s的售价是:%d磅%d便士", "衬衫", 9, 15);
ps.close();
}
}
运行结果:

三、字符打印输出流——PrintWriter
字符流底层有缓冲区,想要自动刷新需要开启。


public class PrintStreamDemo3 {
public static void main(String[] args) throws IOException {
PrintWriter pw = new PrintWriter(new FileWriter("chapter18\\src\\com\\testdemo\\myprintstream\\b.txt"), true);
pw.println("早上好");
pw.print(204887574L);
pw.println();
pw.printf("100的16进制数是:%x %n", 100);
pw.close();
}
}
运行结果:

四、System.out.println与打印流的关系
System.out.println是将数据输出到控制台,打印流是将数据输出到文件中,System.out.println底层调用的就是打印流。
打印流的应用场景:
public class PrintStreamDemo4 {
public static void main(String[] args) {
// 获取打印流的对象,此打印流在虚拟机启动的时候,由虚拟机创建,默认指向控制台
// 特殊的打印流,系统中的标准输出流,是不能关闭,在系统中是唯一的。
PrintStream ps = System.out;
// 调用打印流中的方法println
// 写出数据,自动换行,自动刷新
ps.println("123");
// ps.close(); 关闭后,后面的内容无法打印
ps.println("你好你好");
System.out.println("456");
}
}
public class PrintStreamAndWriter {
public static void main(String[] args) throws IOException {
// 字节打印输出流
PrintStream printStream = new PrintStream("D:\\abc.txt", StandardCharsets.UTF_8);
printStream.write("456".getBytes());
printStream.print(true);
printStream.println("出师表");
printStream.printf("你好,我是%s,今年%d岁", "张三", 26);
printStream.close();
// 字符打印输出流
PrintWriter printWriter = new PrintWriter(new FileWriter("D:\\abc.txt", Charset.forName("UTF-8"), true));
printWriter.write("诸葛孔明");
printWriter.print(false);
printWriter.println(123);
printWriter.printf("你好,我是%s,今年%d岁", "李四", 38);
printWriter.close();
// 读取文件写出的内容
BufferedReader bufferedReader = new BufferedReader(new FileReader("D:\\abc.txt"));
String len;
while ((len = bufferedReader.readLine()) != null) {
System.out.println(len);
}
bufferedReader.close();
/**
* 456true出师表
* 你好,我是张三,今年26岁诸葛孔明false123
* 你好,我是李四,今年38岁
*/
}
}
五、打印流的特点
打印流只能写,不能读
println方法都能同时实现写出数据+刷新+换行

790

被折叠的 条评论
为什么被折叠?



