(每日持续更新)jdk api之PipedWriter基础、应用、实战

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿,每天都会整理到12点,为了就是能让大家能够真正了解该技术栈的真正原理,最终从程序员成为一名真正的架构师,写的不一定是全站做好的,但是是全站最用心的~。

以后我会推出一些列的文章,每天都会更新,每天进步一点点,发布顺序【java的api基础、应用、实战】->【java开源技术栈及源码分析】->【java开源技术栈整合】->【java低代码开发平台的建设】

关注【架构师成长之道】 输入“java基础课程”,即可免费获得全套架构师全套课程

1.61 PrintStream

PrintStream 是 Java 中的一个类,用于打印各种数据类型的值,并提供了一系列方法来实现输出操作。它是 OutputStream 的子类,通常用于将输出发送到控制台或文件。

PrintStream 类的字段:
  • protected boolean autoFlush:表示是否自动刷新缓冲区。

  • protected OutputStream out:表示与此 PrintStream 对象关联的底层输出流。

PrintStream 类的构造方法:
  • PrintStream(File file) throws FileNotFoundException:使用指定的文件创建新的 PrintStream

  • PrintStream(File file, String csn) throws FileNotFoundException, UnsupportedEncodingException:使用指定的文件和字符集名称创建新的 PrintStream

  • PrintStream(OutputStream out):创建新的 PrintStream,并将其输出发送到指定的输出流。

  • PrintStream(OutputStream out, boolean autoFlush):创建新的 PrintStream,并将其输出发送到指定的输出流,同时指定是否自动刷新缓冲区。

  • PrintStream(OutputStream out, boolean autoFlush, String encoding) throws UnsupportedEncodingException:创建新的 PrintStream,将其输出发送到指定的输出流,同时指定是否自动刷新缓冲区和字符编码。

PrintStream 类的方法摘要(部分):
  • void print(boolean b):打印一个布尔值。

  • void print(char c):打印一个字符。

  • void print(double d):打印一个双精度浮点数。

  • void print(int i):打印一个整数。

  • void print(long l):打印一个长整数。

  • void print(Object obj):打印一个对象。

  • void print(String s):打印一个字符串。

  • void println():打印一个空行。

  • void println(boolean x):打印一个布尔值,并结束行。

  • void println(char x):打印一个字符,并结束行。

  • void println(double x):打印一个双精度浮点数,并结束行。

  • void println(int x):打印一个整数,并结束行。

  • void println(long x):打印一个长整数,并结束行。

  • void println(Object x):打印一个对象,并结束行。

  • void println(String x):打印一个字符串,并结束行。

PrintStream 类的简单使用例子:
javaCopy code
import java.io.*;
​
public class PrintStreamExample {public static void main(String[] args) {try {// 创建 PrintStream 对象并将其输出发送到控制台PrintStream ps = new PrintStream(System.out);// 使用 print 方法打印不同类型的数据ps.print("Hello, ");  // 字符串ps.print(123);        // 整数ps.print('A');        // 字符ps.print(3.14);       // 浮点数ps.print(true);       // 布尔值ps.println();         // 换行// 使用 println 方法打印不同类型的数据ps.println("World!");  // 字符串ps.println(456);        // 整数ps.println('B');        // 字符ps.println(2.71);       // 浮点数ps.println(false);      // 布尔值// 关闭 PrintStreamps.close();} catch (Exception e) {e.printStackTrace();}}
}

运行上述代码,将在控制台上看到如下输出:

arduinoCopy code
Hello, 123A3.14true
World!
456
B
2.71
false
应用场景

PrintStream 类可以应用于许多场景,包括但不限于:

  1. 控制台输出:将数据输出到控制台。

javaCopy code
public class ConsoleOutputExample {public static void main(String[] args) {// 创建 PrintStream 对象并将其输出发送到控制台PrintStream ps = System.out;// 使用 println 方法打印数据到控制台ps.println("Hello, World!");// 关闭 PrintStreamps.close();}
}

2.文件输出:将数据输出到文件。

javaCopy code
import java.io.*;
​
public class FileOutputExample {public static void main(String[] args) {try {// 创建 PrintStream 对象并将其输出发送到文件PrintStream ps = new PrintStream(new File("output.txt"));// 使用 println 方法打印数据到文件ps.println("Hello, World!");// 关闭 PrintStreamps.close();} catch (FileNotFoundException e) {e.printStackTrace();}}
}

3.日志记录:将数据输出到日志文件中。

javaCopy code
import java.io.*;
​
public class LogOutputExample {public static void main(String[] args) {try {// 创建 PrintStream 对象并将其输出发送到日志文件PrintStream ps = new PrintStream(new FileOutputStream("log.txt", true)); // 追加模式// 记录日志ps.println("[" + java.time.LocalDateTime.now() + "] Error occurred: Division by zero");// 关闭 PrintStreamps.close();} catch (FileNotFoundException e) {e.printStackTrace();}}
}

4.网络输出:将数据输出到网络流中。

javaCopy code
import java.io.*;
import java.net.Socket;
​
public class NetworkOutputExample {public static void main(String[] args) {try {// 创建 Socket 对象连接到指定服务器的指定端口Socket socket = new Socket("localhost", 8080);// 获取输出流,并创建 PrintStream 对象将其输出发送到网络流OutputStream outputStream = socket.getOutputStream();PrintStream ps = new PrintStream(outputStream);// 发送数据到服务器ps.println("Hello, Server!");// 关闭 PrintStream 和 Socketps.close();socket.close();} catch (IOException e) {e.printStackTrace();}}
}

这些是 PrintStream 类的一些常见用法示例,您可以根据具体需求进行调整和扩展。

实战例子

下面是一个简单的项目实战例子,展示如何使用 PrintStream 类来创建一个简单的命令行笔记应用。用户可以通过命令行输入笔记,并将笔记保存到文件中。

javaCopy code
import java.io.*;
import java.util.Scanner;
​
public class NoteTaker {private static final String FILENAME = "notes.txt";
​public static void main(String[] args) {try {// 创建文件输出流FileOutputStream fileOutputStream = new FileOutputStream(FILENAME, true); // 追加模式PrintStream printStream = new PrintStream(fileOutputStream);
​// 创建输入流Scanner scanner = new Scanner(System.in);
​// 提示用户输入笔记System.out.println("Enter your note (type 'exit' to quit):");
​// 循环读取用户输入while (true) {String input = scanner.nextLine();if ("exit".equalsIgnoreCase(input.trim())) {break;}// 将笔记写入文件printStream.println(input);}
​// 关闭流printStream.close();fileOutputStream.close();scanner.close();
​// 提示用户笔记已保存System.out.println("Your notes have been saved.");} catch (IOException e) {e.printStackTrace();}}
}

这个简单的命令行笔记应用允许用户输入笔记,并将它们追加到名为 notes.txt 的文件中。用户可以输入 exit 来退出应用。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用reduce递归获取有多层嵌套的数组中的children

常见的多层嵌套的数组,如下 const items [{id: 1,name: "item1",children: [{id: 11,name: "item11",children: [{id: 111, name: "item111"},{id: 112, name: "item112"}]},{id: 12,name: "item12",children:…

【问题】解决c++调用exosip是报错,无法解析的外部符号 _DnsQueryConfig@24

问题描述: error LNK2019: 无法解析的外部符号 _DnsQueryConfig24,函数 _eXosip_dnsutils_naptr 中引用了该符号 DnsQueryConfig是windowAPI,可查阅msdn。 #pragma comment(lib,"ws2_32.lib") #pragma comment(lib,"Dnsapi.…

Flutter学习8 - 网络编程 Http

1、配置 Http 依赖 Flutter 工具库搜索地址:https://pub.dev/ http最新版本查看网址: https://pub.dev/packages/http 在 pubspec.yaml 中引入 http 插件 dependencies:flutter:sdk: flutterhttp: ^0.13.4 # 请检查并使用最新版本命令行中输入 “ flut…

服务器后端是学习java还是php

没有绝对的"最好"语言,每种后端语言都有其适用的场景和特点。以下是几种常用的后端语言: 1. Java:Java是一种通用且强大的语言,广泛用于企业级应用和大型系统。它有很好的性能和可靠性,并且具有优秀的生态系…

jxls——自定义命令设置动态行高

文章目录 前言依赖引入绘制 jxls 批注的 excel 模板测试类编写自定义命令关于自动换行 前言 之前的博客中都简单说了数据的渲染和导出excel文件。包括固定的 表头结构,以及动态 表头和表数据等方式。 本篇博客主要说明自定义命令的方式,控制输出excel文…

线上问题——学习记录幂等判断失效问题分析

一、业务流程 上图是对save和saveScore两个接口的流程抽象,save是上传答题数据,saveScore则是上传答题分数,为保证幂等和防止并发调用,这两个接口都加了分布式锁(还是两层哦)。第一层使用的是不同的锁&…

NXP实战笔记(十一):32K3xx基于RTD-SDK在S32DS上配置LPSPI(同步、异步、DMA、主机、从机、中断、轮询)

目录 1、概述 2、RTD-SDK配置 2.1、配置目标 2.2、主、从机引脚配置 2.3、时钟配置 2.4、LPSPI配置 2.5、中断配置 2.6、DMA配置(使用DMA才会配置) 2、dma Logic Instance 2.7、RM配置(使用DMA的情况下必须配置此选项) 3、代码实现 1、概述 S32K3_低功耗LPSPI轮询…

【源码】imx6ull实现触摸屏单点实验-移植tslib和qt

一、本实验实验的器材: 1.正点原子imx6ull的阿尔法开发板v2.2 2.屏幕ALIENTEK 4.3 RGBLCD 二、实验已经移植好的文件: 仓库代码:https://gitee.com/wangyoujie11/atkboard_-linux_-driver.git 1.文件说明 arm-qt.tar.bz2:移植好的…

基于springboot的粮食仓库管理系统(源码+论文)

目录 前言 一、功能设计 二、功能实现 三、库表设计 四、论文 前言 随着我国粮食产量的逐年提升,传统的粮食仓库管理模式已经无法适应当前仓储管理的应用需求,互联网系统平台的发展以及系统化管理模式的普及,粮仓的管理也由传统的人工统…

Cmake的使用

第一步:安装Cmake 双击点开即可,无脑下一步。 第二步:编写一个简单的Cmake项目 CMakeLists.txt文件 # 设置最低的 CMake 版本要求 cmake_minimum_required(VERSION 3.10)# 设置项目名称 project(MyProject)# 添加可执行文件 add_executabl…

SUSE12系统破解root密码

SUSE12系统破解root密码 1、重启系统,重启时出现引导界面,按e 2、在启动 linux 的启动选项里加上 init/bin/bash,然后按 F10 启动,通过给内核传递 init/bin/bash 参数使得 OS 在运行 login 程序之前运行 bash,出现命令…

【力扣白嫖日记】626.换座位

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 626.换座位 表:Seat 列名类型idintstudentvarchar id 是该表的主键(唯一值&#xf…