一,流
流:一连串流动的数据,以先入先出的方式进行传输
流就是管道
数据源——IO流——目的地
分类:
流向分:(一切以程序为中心)
输入流
输出流
操作单元:
字节流:万能流(重点)
字符流:只能操作纯文本内容
功能:
节点流:真实做读写
功能流:增强节点功能与性能
字节流:
节点流:
字节数组流:ByteArray 文件流 file(重点)
字节流的输入流节点流:
InputStream:字节输入流的父类
FileInputStream:文件字节输入流
字节流的输出流节点流:
OutputStream:字节输出的父类
FileOutputStream:文件字节输出流——节点流
注意:如果目的地文件不存在,系统自动创建目的地文件,如果文件不存在,系统不会创建
数据源——输入流——程序——输出流——目的地
字符流(只能读写纯文本数据) 文件流 节点流
输入流 reader
Filereader 文件字符输入流
输出流 Writer
FileWriter 文件字符输出流
功能流(节点流) 包裹使用
缓冲流:加快读写效率
字节缓冲流
BufferedInputStream
BufferedOutputStream
字符缓冲流
输入:BufferedReader
新增功能:String read Line()读一行文字
输出:BufferedWrite
新增功能:Void newLine()写一行分隔符
注意:有新增功能需要调用,不能多态调用
字节流的功能流(基本+String)
Data流|基本数据类型:读写数据的同时保留数据的数据类型
DataInputStream
新增方法:readXxx()
DataOutputStream
新增方法:writeXxx()
注意:写出与读入的顺序保持一致
必须从写出的源文件中读入数据java.io.EoFException
字节流的功能流
Object流|对象流:数据+数据类型(基本|引用)
序列化:把对象数据转为可储存或可传输的状态过程为序列化
反序列化:从状态过程中读取对象数据
先序列化后反序列化
读入和写出的顺序保持一致
不是所有类型的对象都能实现序列化,要求实现一个java.in.Serialiacble
属性可以不被反序列化保存。为属性赋值transient
静态内容不能被序列化
当父类实现了序列化,子类没有属性,子类可以序列化所有内容
当子类实现了序列化,父类没有实现,子类只能序列化自己独有的内容
序列号:
实现了序列化的类中会默认生成序列号
可以通过序列号检测版本不一致问题,可以通过手动设置序列号解决版本问题
当类中的成员有变动,序列号会默认跟新
如何手动生成序列号
1.实现序列化接口
2.Setting设置
3.选中类名alt+enter——》快捷键生成序列号
Commons-Io 是apache的一个开源的工具包,封装了io操作的相关类
使用步骤:
1.去apache下载commons Io的源码jar
2.项目下新建一个文件夹lib,jar放入lib文件夹下
3.选中jar包右键add as lib...
4.项目下使用