当前位置: 首页 > news >正文

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

目录

前言

一、字节打印流

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)

😃😃

http://www.jsqmd.com/news/663466/

相关文章:

  • 开源可部署!MT5中文文本增强工具在金融文档去重中的企业应用案例
  • MySQL 局域网部署实战:3 秒自动上传 + 自动补全 + 跨机查询(避坑指南)
  • 【仅限首批500名开发者获取】:基于eBPF+Code LLM构建的实时自愈沙箱环境,含3套生产级Prompt Chain模板与AST级错误注入测试套件
  • 避开运放电路设计坑:手把手教你用Altium Designer和Multisim验证电压抬升与放大
  • Python实战:从无序点云到结构化Mesh的自动化重建
  • python语法-------strptime + strftime + timedelta 终极区分(一次看懂)
  • 智能代码生成与审查自动化双引擎实践(2024企业级落地白皮书首发)
  • C# + SQL Server 从零到实战:从SQL入门到音乐播放器完整开发之路
  • 反射光电管ITR9909驱动能力不够?试试这颗达林顿管BC517
  • Winhance中文版:Windows系统优化的终极解决方案,免费提升电脑性能与个性化体验
  • 从SX1278到SX1262:手把手教你升级老旧LoRa模块,并实测功耗与传输距离变化
  • WorkshopDL:免费下载Steam创意工坊模组的终极解决方案
  • 构建高精度无人机编队控制仿真系统的工程实践
  • 做 GEO 之前要准备哪些资料:基础信息、内容素材与信号资产清单
  • 告别UNet!用Mirror Networking在Unity 2022 LTS里快速搭建你的第一个多人坦克对战Demo
  • 仅限奇点大会注册参会者获取的检测模型权重+训练数据集(含127万对人工标注克隆样本):AI代码克隆检测从入门到合规上线的7天闭环路径
  • W5500 MACRAW模式实战:在ESP32上抓取并解析原始以太网数据包
  • 别再用Excel硬扛了!用Python的sklearn库5分钟搞定PCA降维(附实战代码)
  • WIN7最新的Chrome内核浏览器
  • 表单django
  • STM32 HAL库RTC配置实战:从CubeMX到解决F1系列掉电日期丢失
  • 5大核心功能揭秘:AKShare财经数据获取的完整实战指南
  • Windows右键菜单的“数字园艺师“:ContextMenuManager深度解析与实战手册
  • 武昌老酒回收电话
  • 避坑指南:在Arduino IDE 1.8.x中编译STM32 Marlin固件报错‘attachInterrupt’的解决方法
  • SSH Client推荐集
  • 手办管理系统|基于springboot + vue手办商城系统(源码+数据库+文档)
  • HC32F460 FPU实战:从零开启硬件浮点加速
  • 从心跳到监护——CANOpen网络管理实战解析
  • 实用CLI工具:命令行下的高效选择