打印流

17.4.9 PrintStream类

(1)基本概念

java.io.PrintStream类主要用于更加方便地打印各种数据内容。

(2)常用的方法

方法声明 功能介绍
PrintStream(OutputStream out)
根据参数指定的引用来构造对象
void print(String s)
用于将参数指定的字符串内容打印出来
void println(String x)
用于打印字符串后并终止该行
void flflush()
刷新流
void close()
用于关闭输出流并释放有关的资源

17.4.10 PrintWriter类

(1)基本概念

java.io.PrintWriter类主要用于将对象的格式化形式打印到文本输出流。

(2)常用的方法

**方法声明 功能介绍**
PrintWriter(Writer out)
根据参数指定的引用来构造对象
void print(String s)
将参数指定的字符串内容打印出来
void println(String x)
打印字符串后并终止该行
void flflush()
刷新流
void close()
关闭流对象并释放有关的资源

转换流

17.4.11 OutputStreamWriter类

(1)基本概念

java.io.OutputStreamWriter类主要用于实现从字符流到字节流的转换。

(2)常用的方法


方法声明 功能介绍
OutputStreamWriter(OutputStream out)
根据参数指定的引用来构造对象
OutputStreamWriter(OutputStream out, String
charsetName)
根据参数指定的引用和编码构造
对象
void write(String str)
将参数指定的字符串写入
void flflush()
刷新流
void close()
用于关闭输出流并释放有关的资源

17.4.12 InputStreamReader类

(1)基本概念

java.io.InputStreamReader类主要用于实现从字节流到字符流的转换。

(2)常用的方法

方法声明 功能介绍
InputStreamReader(InputStream in)
根据参数指定的引用来构造对象
InputStreamReader(InputStream in, String
charsetName)
根据参数指定的引用和编码来构造对象
int read(char[] cbuf)
读取字符数据到参数指定的数组
void close()
用于关闭输出流并释放有关的资源

案例题目

不断地提示用户输入要发送的内容,若发送的内容是”bye”则聊天结束,否则将用户输入的内容写
入到文件d:/a.txt中。
要求使用BufffferedReader类来读取键盘的输入 System.in代表键盘输入
要求使用PrintStream类负责将数据写入文件

执行代码:

package com.lagou.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();
}
}
}
}
}