介绍

IO流就是读取和存储数据的解决方案

image-20250722194923088

结构:

image-20250722201616381

字节流

image-20250722201704545

FileOutputStream

可以把程序中的数据写到本地文件中

步骤:

  • 创建对象

FileOutputStream f1 = new FileOutputStream(“Test7\bb.txt”);

  • 写数据

f1.write(97);

  • 释放资源

f1.close();

一定要释放

FileOutputStream写数据的3种方法

image-20250727183210188

  • 换行写

只需加个换行符就行

1
2
3
String w = "\r\n";
byte[] bytes1 = w.getBytes();
f1.write(bytes1);
  • 续写

如果想要续写而不是清空原文件,只需在创建文件时的第二个参数选择true或false即可

FileOutputStream f1 = new FileOutputStream(“Test7\bb.txt”,true/false);

  • 循环读取
1
2
3
4
int b;
while((b = f2.read()) != -1){
System.out.println((char)b);
}

字符流

特点

一次读一个字节,遇到中文时,一次读多个字节

FileReader

image-20250909180710104

步骤

image-20250909180917165

image-20250909181219589

image-20250909181254345

FileWriter

构造方法

image-20250909181747878

成员方法

image-20250909181913301

细节

image-20250909182059305

使用场景

字节流:拷贝任意类型的文件

字符流:读取纯文本文件中的数据,往纯文本文件中写出数据

^: 异或
两边相同:false
两边不同:true

当一个数字异或另一个数字两次,即可还原

字符缓冲流

image-20250910164423829image-20250910164508193

转换流

image-20250910164544520

序列化流

image-20250910164828023

image-20250910165244009

但是直接用的话会报错,因此要在对象类中(如Student),``implements Serializable`

一旦实现了这个接口,就表示当前的Student类可以被序列化

反序列化流

用序列化流写到文件之后会看不懂,因此要用反序列化流

image-20250910165925979

打印流

image-20250910172817349

image-20250910172932427

字节打印流

image-20250910173120104

不过字节打印流没有缓冲区,刷不刷新都一样

字符打印流

image-20250911132359916

压缩流

image-20250911132444154