Java打印流(PrintStream/PrintWriter)

news2025/1/11 0:14:57

在这里插入图片描述

概念

打印流是输出信息最方便的类,注意包含字节打印流PrintStream和字符打印流PrintWriter。打印流提供了非常方便的打印功能,可以打印任何类型的数据信息,例如:小数,整数,字符串。而且永远不会抛出IOException异常。

  • PrintStream字节打印流
  • PrintWriter字符打印流

一般使用PrintWriter,灵活性更强

打印流只有输出流,没有输入流,主要用于打印,会把你的信息指定到一个位置(显示器或文件等)

PrintStream

由图可知PrintStream的直接父类是FilterOutputStream,顶级父类是OutputStream(字节流)
在这里插入图片描述
该类提供了7个构造方法,根据应用场景进行操作,具体方法可查看JDK文档或百度
在这里插入图片描述
经典用法
System.out:表示标准输出,用来往控制台输出数据,控制台默认打印的是hello world(默认打印是在显示器打印,可以进行修改数据输出的位置)

PrintStream out = System.out;
out.print("hello world");
out.close();

下图为PrintStream类的print方法源码,可以看出print的底层使用的write方法,所以也可以直接调用write方法
在这里插入图片描述

writer方法
因为writer方法底层是按照字节打印的(PrintStream本身就是字节流),所以getBytes方法(String类中)得到一个操作系统默认的编码格式的字节数组

PrintStream out = System.out;
try {
    out.write("hello world".getBytes());
} catch (IOException e) {
    e.printStackTrace();
}
out.close();

修改打印流的输出位置/设备
输出到E盘下的文件,此时代码执行过后,hello world则输出到该文件(使用setOut方法,System类)
在这里插入图片描述

String s = "E:\\test.txt";
try {
    System.setOut(new PrintStream(s));
    System.out.println("hello world");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

PrintWriter

由图可知PrintWriter的直接父类Writer
在这里插入图片描述
该类提供了八个构造器,根据不同的场景选择操作,具体方法可查看JDK文档或百度
在这里插入图片描述

总体上操作方法与PrintStream相同

默认方式
因为这里的System.out未设置,所以默认是显示器输出

PrintWriter printWriter = new PrintWriter(System.out);
printWriter.print("hi,你好");
printWriter.close();

指定路径的输出方式
PrintWriter中传入的是指定路径,所以此时代码的执行结果在相对于的文件中

PrintWriter printWriter = null;
try {
    printWriter = new PrintWriter(new FileWriter("E:\\test.txt"));
} catch (IOException e) {
    e.printStackTrace();
}
printWriter.print("hi,你好");
printWriter.close();

注意:PrintStream和PrintWriter的操作中,最后必须要close关闭,因为实际的输出方法在close方法中,可自行查看底层源码


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DPDK开发之KNI模块代码实现

DPDK开发之KNI模块代码实现背景KNI实现原理 -- ifreq代码实现总结背景 在DPDK开发的时候,如果有些协议不想处理,只处理关注的协议,可以把其他协议写回内核,让内核处理。此时的DPDK就起到分发的作用,类似一个过滤器。 …

二叉树遍历的C语言实现

1、二叉树 树是n个节点的有限集 每个节点事多有两颗子树的树称为 二叉树 该实验目标实现以下二叉树: 2、二叉树的遍历方案 设: D -- 访问根节点,输出根节点; L -- 递归遍历左二叉树; R -- 递归遍历右二叉树; 二叉树遍历方案…

1145. 二叉树着色游戏

有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。 最开始时: 「一号」玩家从 [1, n] 中取一个值 x&#xff…

软件工程期末考试

软件工程一、简答题(5个)什么是软件危机?软件危机产生的原因是什么?怎样克服软件危机?你认为摆脱软件危机了吗?软件危机:是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它…

QT opencv 学习day01 安装opencv ,

1. 安装opencv 教程 看这个大佬的链接 (实测有用)(操作简单) 链接: (1条消息) 【OpenCV】windows Qt环境搭建_logani的博客-CSDN博客 2. 使用opencv 的注意事项 1.首先要在工程文件 .pro 文件里面 加入路径&#x…

Springboot+Echarts实现数据可视化项目

首先,得明白 springboot 需要写什么内容? 先理解下 MVC 模式! bean 层 也称之为 Dao 层 包括XxxMapper.java(数据库访问接口类),XxxMapper.xml(数据库链接实现);mapper 层 也称之为 model层,模型层,entity层,实体层 就是数据库表的映射实体类,存放POJO对象;servi…

Nginx反向代理与负载均衡

一.何为反向代理? 在介绍反向代理之前,先来了解一下正向代理。 正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代…

【前端利器炫酷的CodePen】

前言众所周知,前端是一个很容易将自己的劳动成果呈现出来的一个职位,无论是写1行代码还是写100行代码,都可以通过页面来进行呈现,在工作中的劳作成果也是可以一眼就呈现给客户、用户的。比如一些精美的页面,炫酷的特效…

java集合: ArrayList的底层机制和使用方法

文章目录引言一、Arraylist是什么?二、Arraylist的底层扩容机制(面向面试)1.扩容机制2.扩容过程:3步骤3.注意事项三、使用步骤1.ArrayList类引入2.添加元素3.删除元素4.计算大小5.其他的引用类型6.ArrayList 排序7.ArrayList的遍历方法8.Java ArrayList 方法表格引言…

HTML5+CSS3(六)-全面详解(学习总结---从入门到深化)

目录 CSS简介 CSS概念 为什么需要CSS CSS和HTML之间的关系 语法 学习效果反馈 CSS的引入方式 内联样式(行内样式) 内部样式 外部样式(推荐) 导入式(了解) import和link的区别 学习效果反馈 CSS样式…

代码随想录day53 动态规划

代码随想录day53 动态规划 题392 判断是否子序列 1,与最长公共子序列类似,最后公共子序列的长度要等于s的长度。区别在于当遍历元素不想等的时候,对于字符串s(子序列)不需要删除,对于字符串t,…

Android---CoordinatorLayout原理

目录 CoordinatorLayout 的作用 CoordinatorLayout 的功能 1 处理子控件之间依赖下的交互 2 处理子控件之间的嵌套滑动 3 处理子控件的测量与布局 4 处理子控件的事件拦截与响应 CoordinatorLayout 下的事件传递机制 CoordinatorLayout 协调者布局。 CoordinatorLayout…

Java基础之序列化与反序列化

序列化:将java对象转化为字节序列的过程。 反序列化:将字节序列转化为java对象的过程。 在进行远程通信时,如果需要传输java对象:发送方需要把java对象转换为字节序列(也就是序列化),接收方需要将字节序列转换为java对…

PHP设计模式总括篇

系列文章目录 第一章 工厂模式 第二章 抽象工厂模式 第三章 单列模式 第五章 责任链模式 第六章 策略模式 一,定义 “每一个模式描述了一个在我们周围不断重复发生的**问题,以及该问题的解决方案的核心。**这样,你就能一次又一次地使用该方…

都React V18了,还不会正确使用React Hooks吗,万字长文解析Hooks的常见问题

前言 今天主要想说一下react hooks,react hooks是react v16.8 之后引入的API,现在react都已经到V18了,hooks怎么还能不会用呢? 首先hooks引入的目的是给函数式组件增加数据状态管理的能力,同时增加代码的可复用能力。…

C++的类型转换详解

目录前言一、C语言中的类型转换二、为什么C需要四种类型转换三、C强制类型转换3.1 static_cast3.2 reinterpret_cast3.3 const_cast3.4 dynamic_cast向上转型向下转型四、RTTI(了解)总结前言 在C语言就已经存在了类型转化,但是其中的一些类型转换存在一些问题&…

4.7--贪心--多机调度问题

贪心选择--最长处理时间作业优先&#xff08;n个作业&#xff0c;m台相同机器&#xff09; 当n<m时&#xff0c;只要将机器i的[0, ti]时间区间分配给作业i即可&#xff0c;算法只需要O(1)时间。 当n>m时&#xff0c;首先将n个作业依其所需的处理时间从大到小排…

开发者开年变富,如何迈出第一步?| 「钞能力养成指北」前传

写在前面 &#xff1a; 面对全面放开后多样的消费机会&#xff0c;开发者们如何在保障品质生活的同时&#xff0c;借助开源工具&#xff0c;全面、科学地规划和管理个人财务&#xff0c;把握资金动向&#xff0c;避开消费陷阱&#xff1f; LigaAI 特邀我司 Nerd4me 大佬分享其个…

Apollo planning之交规决策技术

Apollo studio 官网&#xff1a;Apollo开发者社区 (baidu.com) 目录 1 双层状态机 2 决策模块的解析 2.1 参考路径 2.2 交规决策 2.3 路径决策 2.4 速度决策 2.5 场景的调度与管理 3 交规决策实现代码解读 3.1 遍历交规配置文件&#xff0c;存储信息 3.2 交规决…

分布式(三)

三、API 网关详解 1. 网关及作用 主要功能&#xff1a;请求过滤 网关可以为我们提供请求转发、安全认证&#xff08;身份/权限认证&#xff09;、流量控制、负载均衡、降级熔断、日志、监控等功能。 2. 常见的网关系统 2.1 Netflix Zuul &#xff08;1&#xff09;Zuul 是…