学习笔记:Java IO流-PrintStream类
学习笔记:Java IO流-PrintStream类
快速了解Java官方文档,让你在几分钟内直接找到你想要的答案
在我们写代码时经常使用的System.out.println(),此方法是编写一行输出数据的典型方式,而System.out就是一个PrintStream的实例对象,而它的作用顾名思义就是显示器输出,对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
继承关系:
java.lang.Object
→ java.io.OutputStream
→ java.io.FilterOutputStream
→ java.io.PrintStream
- PrintStream为其他输出流添加了特别的功能,使它们能方便的打印各种形式的数据。
- 与其他输出流不同的是,PrintStream永远不会抛出IOException异常,而是,它的异常情况仅设置为通过checkError方法测试的内部标志
以下是对PrintStream类中方法的摘要


checkError()
public boolean checkError(): 刷新流并检查其错误状态。当底层输出流抛出 IOException 而不是nterruptedIOException 时,以及调用 setError 方法时,内部错误状态将被设置为true。如果对底层输出流的操作抛出 InterruptedIOException,则通过调用以下方法或等效方法,PrintStream 将该异常转换回中断状态。
返回:
当且仅当此流遇到 IOException 而不是 InterruptedIOException 时,或已调用 setError方法时时,返回 true。*
PrintStream案例
键盘输入学号与成绩写入date.txt文件中,并在result.txt文件中输出平均值,最大值,最小值*
package Th_WangClassRoom.day01_code.Demo03;
import java.io.*;
public class demo1 {
public static void main(String[] args) throws IOException {
/*
写入date文件中目标内容
*/
PrintStream ps = new PrintStream("src\\Th_WangClassRoom\\day01_code\\Demo03\\date.txt");
System.setOut(ps);
/*
注意System.in不是PrintStream,是没有包装过的OutputStream.所以System.in不能直接使用.
*/
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
/*
* 读取键盘输入的内容,写入date文件
*/
String line = br.readLine();
while(!"over".equalsIgnoreCase(line)) {
ps.println(line);
line = br.readLine();
}
/*
* 读取date文件,并对内容进行筛选
* 平均值
* 最大值
* 最小值
* */
FileInputStream fis = new FileInputStream("src\\Th_WangClassRoom\\day01_code\\Demo03\\date.txt");
System.setIn(fis);
BufferedReader br1 = new BufferedReader(new InputStreamReader(fis));
String line1 = br1.readLine();
int num = 0;
int sum = 0;
int max = 0;
int min = 100;
int avg = 0;
while (line1 != null) {
String[] split = line1.split(",");
num++;
sum += Integer.parseInt(split[1]);
avg = sum/num;
if (Integer.parseInt(split[1]) > max) {
max = Integer.parseInt(split[1]);
}
else {
max = max;
}
if (Integer.parseInt(split[1]) <= min) {
min = Integer.parseInt(split[1]);
}
else {
min = min;
}
line1 = br1.readLine();
}
/*
* 将内容输出打印在指定的位置result.txt
* */
PrintStream ps1 = new PrintStream("src\\Th_WangClassRoom\\day01_code\\Demo03\\result.txt");
System.setOut(ps1);
System.out.println("avg = " + avg + "\nmax = " + max +"\nmin = " + min);
/*
* 关闭流,释放资源
* */
ps.close();
br.close();
fis.close();
br1.close();
ps1.close();
}
}
结果输出:
键盘输入
学号 成绩
1, 70
2, 80...
这样的数据,会写入进data.txt,随后程序会进行处理,将成绩进行筛选,求出平均分、最高分、最低分,将结果录入进result.txt文件

浙公网安备 33010602011771号