3.7 Java之打印流和数据流(附字符字节流练习)

  • 打印流
    • 实例
  • 数据流
    • 数据流输出
    • 数据流输入
  • 字符字节流练习
    • 字节流输出
    • 字符流输出
    • 字符流输入
    • 字符流输入输出
    • 总结


打印流

  • 属于输出流
  • 分为PrintStream(字节打印流)和PrintWriter(字符打印流)
  • 提供了一系列重载的print和println方法,用于多种数据类型的输出
  • PrintStream和PrintWriter的输出不会抛出异常
  • PrintStream和PrintWriter有自动flush功能
  • System.out返回的是PrintStream的实例

实例

FileOutputStream fos = null;
    try {
        fos = new FileOutputStream(new File("D:\\IO\\text.txt"));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }//创建打印输出流,设置为自动刷新模式(写入换行符或字节 '\n' 时都会刷新输出缓冲区)
    PrintStream ps = new PrintStream(fos,true);//字节型打印流 实例化
    if (ps != null) {   // 把标准输出流(控制台输出)改成文件
        System.setOut(ps);//形参为打印字节流的对象}
    for (int i = 0; i <= 255; i++) {  //输出ASCII字符
        System.out.print((char)i);//对应的ASCII码
        if (i % 50 == 0) {   //每50个数据一行
            System.out.println(); // 换行
        }  }
    ps.close();
  • 创建字节型的打印流,缓冲流是手动刷新的,true表示自动刷新(flush)
  • out是标准的输出流,默认打印到控制台上
  • 默认控制台输出,重新设置位置,设置为:输出到打印流指定的文件中

数据流

  • 数据流有两个类,没有对应的reader和writer,因为不是文本的
  • 分为输入型的数据流和输出型的数据流
  • 数据流处理的是基本数据类型,字符串和字节数组(8+2)
  • 作用于节点流山,属于处理流

数据流输出

3.7 Java之打印流和数据流(附字符字节流练习)_第1张图片

数据流输入

3.7 Java之打印流和数据流(附字符字节流练习)_第2张图片

  • 若write读取文件,输入到控制台上,呈现乱码
  • 正确做法:通过数据流的输入读取信息,打印到控制台上
  • 输出时,采用输出型数据流,相应地,输入时,也应采用输入型数据流,否则乱码
  • 错误:用write读取基本数据类型

字符字节流练习

字节流输出

3.7 Java之打印流和数据流(附字符字节流练习)_第3张图片

  • 通过字符串转化为字节数组,从而使用字节流输出
  • 未加flush(失误)

字符流输出

3.7 Java之打印流和数据流(附字符字节流练习)_第4张图片
3.7 Java之打印流和数据流(附字符字节流练习)_第5张图片

  • 未加flush(失误)

字符流输入

3.7 Java之打印流和数据流(附字符字节流练习)_第6张图片

  • 打印到控制台上,带ln的print
  • readLine与换行一定配对使用
  • FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象
    参数为文件路径
    • 等效于new file,只是封装到一起了,参数对应的还是一个file对象,本质上操作的是一个对象

字符流输入输出

3.7 Java之打印流和数据流(附字符字节流练习)_第7张图片

  • 下方代码未处理异常,自行补充
  • 输出时,文件对象可不存在
  • 若改成字节流输入输出,则三处改动(两个类一个数组)

总结

  • 字节流通过byte数组实现
  • 字符流通过char数组或readLine【write(string)】实现
  • 缓冲流输出一定要flush
  • 使用readline记得换行

你可能感兴趣的:(Java学习笔记,打印流,数据流)