从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • JavaSE

    • 我的 Java 学习路线
    • 安装 Java
    • Java 数据类型

    • Java 多版本配置
    • 面向对象

    • Java 核心类

    • IO

      • IO 介绍
      • File 对象介绍
      • InputStream
      • OutputStream
      • Decorator 模式
      • 读写 zip 文件
      • Properties 类
      • 读取 classpath 中的配置文件
      • 序列化与反序列化
      • Reader
      • Writer
      • PrintStream 和 PrintWriter
        • PrintStream
        • PrintStream
      • Scanner
      • 使用 Files
      • Console
      • IO 系列小结
    • Java 与时间

    • 异常处理

    • 哈希和加密算法

    • Java8 新特性

    • 网络编程

  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java
  • JavaSE
  • IO
2023-02-02
目录

PrintStream 和 PrintWriter

# PrintStream 和 PrintWriter

我们如果想要打印数据,经常会使用 System.out.println();

System.out.print(12345); // 输出12345
System.out.print(new Object()); // 输出类似java.lang.Object@3c7a835a
System.out.println("Hello"); // 输出Hello并换行
1
2
3

其实,这也是一种 IO,只不过输出到了控制台而已,而 System.err 则是标准错误输出。

# PrintStream

PrintStream 是一种 FilterOutputStream,它在 OutputStream 的接口上,额外提供了一些写入各种数据类型的方法:

  • 写入 int:print(int)
  • 写入 boolean:print(boolean)
  • 写入 String:print(String)
  • 写入 Object:print(Object),实际上相当于 print(object.toString())
  • ...

以及对应的一组 println() 方法,它会自动加上换行符。System.out 就是系统默认提供的 PrintStream

PrintStream 和 OutputStream 相比,除了添加了一组 print()/println() 方法,可以打印各种数据类型,比较方便外,它还有一个额外的优点,就是不会抛出 IOException,这样我们在编写代码的时候,就不必捕获 IOException。

# PrintWriter

PrintStream最终输出的总是 byte 数据,而 PrintWriter则是扩展了 Writer接口,它的 print()/println()方法最终输出的是 char数据。两者的使用方法几乎是一模一样的。

PrintWriter 的常用方法如下:

Java.io.Printwitet
+Printwriter(file: File)         为指定的文件对象创建一个Printwriter对象
+Printwriter(filename: String)   为指定的文件名字符串创建一个PrintWriter对象
+print(s: String): void       将字符串写人文件中
+print(c: char): void					将字符写人文件中
+print(cArray: char[1): void  将字符数组写入文件中
+print(i: int): void				将一个int值写入文件中
+print(1: 1ong): void				将一个1ong值写入文件中
+print(f: float): void			将一个float值写入文件中
+print(d: double): void			将一个double值写入文件中
+print (b: boglean): void		将一个boolean值写入文件中

和print方法类似,println和printf方法也有一样的重载。
println方法和print方法类似;但是会打印一个换行符,不同操作系统下换行符不同。
printf :格式化输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

使用 PrintWriter,可以向文件中写入数据:例如向文件 score.txt 中写入两行数据的例子。每行都包括名字(字符串)、中间名字的首字母(字符)、姓(字符串)和分数(整数)。

public class WriteData {
  public static void main(String[] args) throws Exception {
    java.io.File file = new java.io.File("scores.txt");
    if (file.exists()) {
      System.out.println("File already exists");
      System.exit(0);
    }

    // Create a file
    java.io.PrintWriter output = new java.io.PrintWriter(file);

    // Write formatted output to the file
    output.print("John T Smith ");
    output.println(90);
    output.print("Eric K Jones ");
    output.println(85);

    // Close the file
    output.close();
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

上述代码先判断文件是否存在,不存在则会自动创建一个文件并写入,如果存在则不写入(如果存在的情况下,还是写入,那么原本文件的内容就会被丢弃)

类似的,还可以向 StringWriter 中写入:

import java.io.*;

public class Main {
    public static void main(String[] args)     {
        StringWriter buffer = new StringWriter();
        try (PrintWriter pw = new PrintWriter(buffer)) {
            pw.println("Hello");
            pw.println(12345);
            pw.println(true);
        }
        System.out.println(buffer.toString());
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14

我们如果想要打印数据,经常会使用System.out.println();

System.out.print(12345); // 输出12345
System.out.print(new Object()); // 输出类似java.lang.Object@3c7a835a
System.out.println("Hello"); // 输出Hello并换行
1
2
3

其实,这也是一种IO,只不过输出到了控制台而已,而System.err则是标准错误输出。

# PrintStream

PrintStream是一种FilterOutputStream,它在OutputStream的接口上,额外提供了一些写入各种数据类型的方法:

  • 写入int:print(int)
  • 写入boolean:print(boolean)
  • 写入String:print(String)
  • 写入Object:print(Object),实际上相当于print(object.toString())
  • ...

以及对应的一组println()方法,它会自动加上换行符。System.out就是系统默认提供的PrintStream

PrintStream和OutputStream相比,除了添加了一组print()/println()方法,可以打印各种数据类型,比较方便外,它还有一个额外的优点,就是不会抛出IOException,这样我们在编写代码的时候,就不必捕获IOException。 ‍

# PrintWriter

PrintStream最终输出的总是byte数据,而PrintWriter则是扩展了Writer接口,它的print()/println()方法最终输出的是char数据。两者的使用方法几乎是一模一样的

PrintWriter的常用方法如下:

Java.io.Printwitet
+Printwriter(file: File)         为指定的文件对象创建一个Printwriter对象
+Printwriter(filename: String)   为指定的文件名字符串创建一个PrintWriter对象
+print(s: String): void       将字符串写人文件中
+print(c: char): void					将字符写人文件中
+print(cArray: char[1): void  将字符数组写入文件中
+print(i: int): void				将一个int值写入文件中
+print(1: 1ong): void				将一个1ong值写入文件中
+print(f: float): void			将一个float值写入文件中
+print(d: double): void			将一个double值写入文件中
+print (b: boglean): void		将一个boolean值写入文件中

和print方法类似,println和printf方法也有一样的重载。
println方法和print方法类似;但是会打印一个换行符,不同操作系统下换行符不同。
printf :格式化输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

使用PrintWriter,可以向文件中写入数据:例如向文件score.txt中写入两行数据的例子。每行都包括名字(字符串)、中间名字的首字母(字符)、姓(字符串)和分数(整数)。

public class WriteData {
  public static void main(String[] args) throws Exception {
    java.io.File file = new java.io.File("scores.txt");
    if (file.exists()) {
      System.out.println("File already exists");
      System.exit(0);
    }

    // Create a file
    java.io.PrintWriter output = new java.io.PrintWriter(file);

    // Write formatted output to the file
    output.print("John T Smith ");
    output.println(90);
    output.print("Eric K Jones ");
    output.println(85);

    // Close the file
    output.close();
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

上述代码先判断文件是否存在,不存在则会自动创建一个文件并写入,如果存在则不写入(如果存在的情况下,还是写入,那么原本文件的内容就会被丢弃)

类似的,还可以向StringWriter中写入:

import java.io.*;

public class Main {
    public static void main(String[] args)     {
        StringWriter buffer = new StringWriter();
        try (PrintWriter pw = new PrintWriter(buffer)) {
            pw.println("Hello");
            pw.println(12345);
            pw.println(true);
        }
        System.out.println(buffer.toString());
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
上次更新: 2025/6/3 09:31:54
Writer
Scanner

← Writer Scanner→

最近更新
01
新闻合订本 2025-10
10-31
02
2025 年 10 月记
10-30
03
用 AI 批量优化思源笔记排版
10-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式