|NO.Z.00082|——————————|BigDataEnd|——|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
请张三输入要发送的聊天内容:
我是帅哥
请李四输入要发送的聊天内容:
我不是帅哥
请张三输入要发送的聊天内容:
我是帅哥
请李四输入要发送的聊天内容:

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(24)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示