CC00082.bigdatajava——|Java&IO流.V09|——|Java.v09|IO流.v09|打印流|转换模拟聊天功能实现|

一、PrintStream类
### --- PrintStream类

——>        [打印流和转换流模拟聊天的功能实现]——[打印流和转换流模拟聊天的功能优化]
### --- 基本概念

——>        java.io.PrintStream类主要用于更加方便地打印各种数据内容。
二、常用的方法
方法声明功能介绍
PrintStream(OutputStream out)根据参数指定的引用来构造对象
void print(String s)用于将参数指定的字符串内容打印出来
void println(String x)用于打印字符串后并终止该行
void flush() 刷新流
void close() 用于关闭输出流并释放有关的资源
三、PrintWriter类
### --- 基本概念

——>        java.io.PrintWriter类主要用于将对象的格式化形式打印到文本输出流。
四、常用的方法
方法声明功能介绍
PrintWriter(Writer out)根据参数指定的引用来构造对象
void print(String s) 将参数指定的字符串内容打印出来
void println(String x) 打印字符串后并终止该行
void flush()刷新流
void close()关闭流对象并释放有关的资源
### --- 案例题目

——>        不断地提示用户输入要发送的内容,若发送的内容是"bye"则聊天结束,
——>        否则将用户输入的内容写入到文件d:/a.txt中。
——>        要求使用BufferedReader类来读取键盘的输入 System.in代表键盘输入
——>        要求使用PrintStream类负责将数据写入文件
五、OutputStreamWriter类
### --- 基本概念

——>        java.io.OutputStreamWriter类主要用于实现从字符流到字节流的转换。
六、常用的方法
方法声明功能介绍
OutputStreamWriter(OutputStream out)根据参数指定的引用来构造对象
OutputStreamWriter(OutputStream out, StringcharsetName)根据参数指定的引用和编码构造对象
void write(String str) 将参数指定的字符串写入
void flush()刷新流
void close()用于关闭输出流并释放有关的资源
七、InputStreamReader类
### --- 基本概念

——>        java.io.InputStreamReader类主要用于实现从字节流到字符流的转换。
八、常用的方法
方法声明功能介绍
InputStreamReader(InputStream in)根据参数指定的引用来构造对象
InputStreamReader(InputStream in, StringcharsetName)根据参数指定的引用和编码来构造对象
int read(char[] cbuf)读取字符数据到参数指定的数组
void close()用于关闭输出流并释放有关的资源
九、编译打印
package com.yanqi.task17;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class PrintStreamChatTest {

    public static void main(String[] args) {

        // 由手册可知:构造方法需要的是Reader类型的引用,但Reader类是个抽象类,实参只能传递子类的对象  字符流
        // 由手册可知: System.in代表键盘输入, 而且是InputStream类型的 字节流
        BufferedReader br = null;
        PrintStream ps = null;
        try {
            br = new BufferedReader(new InputStreamReader(System.in));
            ps = new PrintStream(new FileOutputStream("d:/a.txt", true));

            // 声明一个boolean类型的变量作为发送方的代表
            boolean flag = true;

            while(true) {
                // 1.提示用户输入要发送的聊天内容并使用变量记录
                System.out.println("请" + (flag? "张三": "李四") + "输入要发送的聊天内容:");
                String str = br.readLine();
                // 2.判断用户输入的内容是否为"bye",若是则聊天结束
                if ("bye".equals(str)) {
                    System.out.println("聊天结束!");
                    break;
                }
                // 3.若不是则将用户输入的内容写入到文件d:/a.txt中
                //else {
                // 获取当前系统时间并调整格式
                Date d1 = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                ps.println(sdf.format(d1) + (flag?" 张三说:":" 李四说:") + str);
                //}
                flag = !flag;
            }
            ps.println(); // 写入空行 与之前的聊天记录隔开
            ps.println();
            ps.println();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 4.关闭流对象并释放有关的资源
            if (null != ps) {
                ps.close();
            }
            if (null != br) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
十、编译打印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=50893:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task17.PrintStreamChatTest
请张三输入要发送的聊天内容:
我是帅哥
请李四输入要发送的聊天内容:
我不是帅哥
请张三输入要发送的聊天内容:
我是帅哥
请李四输入要发送的聊天内容:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值