资讯动态

【从零开始学Java | 第三十九篇】 打印流

发布时间:2026/9/26 1:41:21 来源:尧图企业网站定制
目录前言一、字节打印流1.构造方法2.成员方法3.代码演示二、字符打印流1.构造方法2.成员方法3.代码演示三、打印流的应用场景总结前言打印流属于高级流分为处理字节的PrintStream和处理字符的PrintWriter。有三个特点打印流只操作文件目的地不操作数据源。特定的写出方法可以实现数据的原样写出例如打印97 文件中97特有的写出方法可以实现自动刷新、自动换行。一、字节打印流字节流底层没有缓冲区因此打开自动刷新对效率的影响不大。1.构造方法构造方法说明public PrintStream(OutputStream/File/String)关联字节输出流/文件/路径public PrintStream(String fileName, Charset charset)指定字符编码public PrintStream(OutputStream out, boolean autoFlush)自动刷新public PrintStream(OutputStream out, boolean autoFlush, String encoding)指定字符编码并刷新2.成员方法成员方法说明public void write(int b)常规写入方法public void println()打印任意数据自动刷新自动换行public void print()打印任意数据不换行public void printf(String format, Object ... args)带有占位符的打印语句不换行3.代码演示public class Test { public static void main(String[] args) throws FileNotFoundException { PrintStream ps new PrintStream(new FileOutputStream(src\\d.txt), true, Charset.forName(UTF-8)); ps.println(97); ps.println(true); ps.printf(%s 吃 %s, 鱼, 虾); ps.println(); ps.close(); } }运行结果二、字符打印流字符流底层有缓冲区想要自动刷新需要开启1.构造方法构造方法说明public PrintWriter(OutputStream/File/String)关联字符输出流/文件/路径public PrintWriter(String fileName, Charset charset)指定字符编码public PrintWriter(OutputStream out, boolean autoFlush)自动刷新public PrintWriter(OutputStream out, boolean autoFlush, String encoding)指定字符编码并刷新2.成员方法成员方法说明public void write(int b)常规写入方法public void println()打印任意数据自动刷新自动换行public void print()打印任意数据不换行public void printf(String format, Object ... args)带有占位符的打印语句不换行3.代码演示public class Test { public static void main(String[] args) throws IOException { PrintWriter pw new PrintWriter(new FileWriter(src\\e.txt)); pw.println(你好你好你好); pw.close(); } }运行结果三、打印流的应用场景我们平时经常使用的System.out其实就是一个字节打印流指向了本地控制台。既然System.out本质上只是一个指向控制台的PrintStream那我们能不能把它改一下让它指向一个本地文件呢import java.io.PrintStream; public class RedirectOutDemo { public static void main(String[] args) throws Exception { // 1. 创建一个新的打印流指向我们指定的日志文件 PrintStream fileOut new PrintStream(C:\\system_log.txt); // 2. 把默认打印到屏幕的动作重定向到我们的 fileOut 流中 System.setOut(fileOut); // 3. 接下来所有的 System.out.println 都不再显示在屏幕上了 System.out.println(【日志】系统启动成功...); System.out.println(【日志】连接数据库: localhost:3306); System.out.println(【日志】发现异常攻击开始拦截); // 记得关闭流 fileOut.close(); } }总结不需要捕获异常。println()什么对象传进去都能原样打印出字符串还能自动换行。支持格式化 (printf)和自动刷新 (auto-flush)。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑