一切皆为字节流
一、字节输出流
java.io.OutputStream:此抽象类是表示输出字节流的所有类的超类。
定义了一些子类共性的成员方法:
tips:
close方法,当完成流的操作时,必须调用此方法,释放系统资源
文件字节输出流
写入数据的原理(内存到硬盘)
Java程序–> jvm(java虚拟机)–> OS --> OS调用写数据的方法 --> 把数据写入到文件中
字节输出流使用步骤(重点)
追加写与续写
二、字节输入流
读取数据原理
Java程序 --> JVM --> os --> OS读取数据的方法 -->读取方法
字节输入流使用步骤
字节输入流一次读取多个字节的方法:
三、字符流
字符输入流
Java.io.Reader:字符输入流,是字符输入流的最顶层的父类,定义了一些共性的成员方法,是一个抽象类。
共性的成员方法:
FileReader:文件字符输入流
作用:把硬盘文件中的数据以字符的方式读取到内存中。
字符输入流的使用步骤
字符输出流
java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类。
共性的成员方法:
FileWriter:文件字符输出流
作用:把内存中的字符数据写入到文件中
构造方法:
字符输出流的使用步骤:
flush方法与close方法:
Properties集合
java.util.Properties集合,表示了一个持久的属性集,可保存在流中或从流中加载。
Properties集合是一个唯一和IO流相结合的集合
1.可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入硬盘中存储。
2.可以使用Properties集合中的方法load,把硬盘中保存的文件(键值对),读取到集合中使用
属性列表中每一个Key以及对应值都是一个字符串。
1.Properties集合是一个双列集合,key和value默认都是字符串。
作用: 广泛运用在与jdbc交互。数据以键值对的形式交互。
取值方法:
Properties方法store
Properties方法load
字节缓冲流
给基本的字节输入流增加一个 缓冲区(数组) 提高基本的字节输入流的读取效率
共性成员方法,构造方法,使用步骤
字符缓冲输入输出流
BufferedWriter
BufferedReader
转换流
编码表
字符集
转换流原理
OutputStreamWriter
是字符流通向字节流的桥梁,可使用指定的charset将要写入流中的字符编码或字节(编码:把能看懂的变成看不懂的)
共性方法,构造方法,使用步骤:
序列化
序列化: 把对象以流的方式,写入到文件中保存,叫写对象,也叫对象的序列化。
对象中包含的不仅只有字符,所以用字节流输出
ObjectOutputStream:对象的序列化流
反序列化: 把文件中保存的对象,以流的方式读取出来,叫做读对象,也叫对象的反序列化。
读取文件保存的都是字节,所以使用字节流输入
ObjectInputStream:对象的反序列化流。
序列化构造方法,成员方法,使用步骤:
NotSerializableException异常
IO流整体框架脑图
https://pic2.zhimg.com/v2-adf9568db6289098b6db2a469b44aa5d_r.jpg?source=1940ef5c