学习笔记: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文件

posted @ 2020-03-16 15:54  一位靓仔i  阅读(107)  评论(0)    收藏  举报