(每日持续更新)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);      // 布尔值
            
            // 关闭 PrintStream
            ps.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!");
        
        // 关闭 PrintStream
        ps.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!");
            
            // 关闭 PrintStream
            ps.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");
            
            // 关闭 PrintStream
            ps.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 和 Socket
            ps.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 来退出应用。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设置word目录从正文开始记录页码,并解决word目录正常,但正文页脚处只显示第一页的页码

设置word目录从正文开始记录页码,并解决word目录正常,但正文页脚处只显示第一页的页码 问题详情1:如何设置目录从正文开始记录页码 问题详情2:word目录处的页码正常,但正文只有第一页的页脚处显示页码 解决方法 在设置…

web开发:如何用Echarts来自动给网页设计各种统计图

很多时候web开发也会需要用到统计图,如果单纯靠我们自己那点拙劣的css和js水平设计的话,又耗时间又做得跟史一样,这时候就需要引入别人设计师为我们设计好的动态统计图——echarts Echarts的官网是:Apache ECharts 1、第一步&…

稀碎从零算法笔记Day4-LeetCode:交替合并字符串

前言:今天妹有深夜档,因为8点有个飞机 题型:字符串、双指针(笔者没用这个思路) 链接:1768. 交替合并字符串 - 力扣(LeetCode) 来源:LeetCode 著作权归作者所有。商业转…

时钟域交叉设计——Clock Domain Crossing Design

What is Metastability? 任何关于时钟域交叉(CDC)的讨论,都应从对可变性和同步性的基本了解开始。通俗地说,可变性是指一种不稳定的中间状态,在这种状态下,最轻微的干扰也会导致稳定状态的恢复。当应用于…

QT----QTcreater连接Mysql数据库

目录 1、下载驱动,放入文件夹2、编写代码,实现本地访问3、实现网络数据库3.1 更改权限3.2 修改代码 之前写了一个图书管理系统用的是sqlite3,现在想用mysql,部署到网上,实现远程访问。 1、下载驱动,放入文…

Draft-P802.11be-D3.2协议学习__$Annex-Z-HE-SIG-B-and-EHT-SIG-content-examples

Draft-P802.11be-D3.2协议学习__$Annex-Z-HE-SIG-B-and-EHT-SIG-content-examples Z.1 GeneralZ.2 HE-SIG-B example 1Z.3 HE-SIG-B example 2Z.4 HE-SIG-B example 3Z.5 HE-SIG-B example 4Z.6 EHT-SIG example 1(EHT OFDMA 80MHz)Z.7 EHT-SIG example …

虚假交易商常态化,2月下半月FX110曝光43家黑平台

以半个月为期,FX110网对虚假交易商进行常态化曝光,只为极力打压黑平台生存空间,让更多人的避免被骗。 2月上半月,FX110网曝光黑平台41家,下半月曝光数与上半月基本持平,为43家。 曝光的这43家黑平台绝大部…

Win UI3开发笔记(四)设置主题续2

本机深色主题下设置的背景颜色可以作用于整个对话框,本机浅色模式下设置的背景颜色只作用与下边的部分。 如果本机选深色,程序选浅色,设置为light只对上部分管用,下部分不管用。如图,左边那个hello按钮要看不见了。。…

LeetCode:1976. 到达目的地的方案数(spfa + 记忆化 Java)

目录 1976. 到达目的地的方案数 原题链接 题目描述: 实现代码与解析: spfa 记忆化 原理思路: 1976. 到达目的地的方案数 原题链接 1976. 到达目的地的方案数 题目描述: 你在一个城市里,城市由 n 个路口组成&a…

RabbitMQ 高级

在昨天的练习作业中,我们改造了余额支付功能,在支付成功后利用RabbitMQ通知交易服务,更新业务订单状态为已支付。 但是大家思考一下,如果这里MQ通知失败,支付服务中支付流水显示支付成功,而交易服务中的订单…

【mogoose】对查询的数据进行过滤后不需要展示的信息

数据库结构如下 我只要email userName sex role 几个数据,其余不要 {_id: new ObjectId(65e7b6df8d06a0623fa899f5),email: 12345qq.com,pwd: $2a$10$eLJ9skKEsQxvzHf5X8hbaOXKtg8GCHBeieieSN6Usu17D2DPaI44i,userName: 默认昵称0769,sex: 0,token: {upCount: 0,_…

『python爬虫』ip代理池使用 协采云 账密模式(保姆级图文)

目录 实现效果实现思路代码示例总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 实现效果 在官网原版demo基础上小改了一下,修正了接口错误(把2023改成2024就可以了),原版demo只能测试单个ip,我这里批量测试所有…

探索设计模式的魅力:深入解析解释器模式-学习、实现与高效使用的全指南

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,并且坚持默默的做事。 探索设计模式的魅力:解析解释器模式学习、实现与高效使用全指南 文章目录 一、案…

maven中dependencyManagement

如果所在pom中dependency引入的依赖没有指定版本号&#xff0c;会以pom中dependencyManagement所制定的版本号为准吗 是的&#xff0c;如果在项目的 <dependency> 元素中没有指定版本号&#xff0c;而且该依赖在 <dependencyManagement> 中有指定版本号&#xff0…

如何从 WordPress 中的静态资源中删除查询字符串

今天有一个客户来问询&#xff0c;hostease主机创建的WordPress站点&#xff0c;在GTMetrix或Pingdom进行网站速度测试&#xff0c;看到有关查询字符串的警告。如果不想看到查询字符串的警告&#xff0c;要如何处理呢?我们测试&#xff0c;可以通过一些处理满足这个需求。我们…

multiprocessing Event实现中断进程或程序

参考&#xff1a;https://www.cnblogs.com/MoKinLi/p/17931515.html import multiprocessing import timedef worker(event, value):while True:# 检查事件是否被设置if event.is_set():# 事件被设置&#xff0c;中断程序break# 模拟工作time.sleep(1)print(f"Working: {…

DataGrip 连接 Centos MySql失败

首先检查Mysql是否运行&#xff1a; systemctl status mysqld &#xff0c; 如果显示没有启动则需要启动mysql 检查防火墙是否打开&#xff0c;是否打开3306的端口 sudo firewall-cmd --list-all 如果下面3306没有打开则打开3306端口 publictarget: defaulticmp-block-inver…

消防监督业务比武竞赛活动方案

为检验各级消防救援机构消防监督业务大练兵成效&#xff0c;根据总队防火业务练兵活动总体部署&#xff0c;决定举办“云岭蓝盾”杯消防监督业务比武竞赛&#xff0c;方案如下&#xff1a; 决赛设置打铁还需自身硬、实践真知显担当、鱼跃龙门展风采3个环节。利用比武竞赛平台设…

设计模式:策略模式 ⑥

一、策略模式思想 简介 策略模式&#xff08;Strategy Pattern&#xff09;属于对象的行为模式。其用意是针对一组算法&#xff0c;将每一个算法封装到具有共同接口的独立的类中&#xff0c;从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。…

【比较mybatis、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp操作数据】操作批量新增、分页查询(四)

orm框架使用性能比较 比较mybatis、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp操作数据 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本编码方式mybatis☑️☑️3.5.4lambda xml 优化sq…