Day22
前面讲的都是基本的输入输出流,今天讲各种功能流
22.01 序列流
1、什么是序列流 继承自InputStream
相当于讲输入流管子连接起来了,大管套小管,写一次读取就可以了。
序列流可以把多个字节输入流整合成一个,从序列流中读取数据时,将从被整合的第一个流开始读,读完一个之后继续读第二个,以此类推。
2、使用方式
整个两个:SequenceInputStream(InputStream, InputStream)
22.02 序列流整合多个
整合多个:SequenceInputStream(Enumeration ExtendsInputStream> e)
构造函数可以传一个枚举进去
22.03 内存输出流(五星)
1、什么是内存输出流
该输出流可以向内存中写数据,把内存当做一个缓冲区,写出之后可以一次性获取出所有数据
应用:聊天的软件可以用
2、使用方式
创建对象:new ByteArrayOutputStream()
写出数据:write(int) write(byte[])
获取数据:toByteArray()
22.04 内存输出流之黑马面试题
定义一个文件输入流,调用read(bte[] b)方法,将a.txt文件中的内容打印出来(byte数组大小限制为5)
22.05 对象操作流ObjectOutputStream
1、什么是对象操作流
该流可以将一个对象写出,获取读取一个对象到程序中,也就是执行了序列化和反序列化的操作。
写出就是序列化,读取就是反序列化
对象必须实现Serializable接口,才能序列化和反序列化
2、使用方式
写出 newObjectOutputStream(OutputStream) writeObject()
22.06 对象操作流ObjectInputStream
读取:newObjectInputStream(InputStream) readObject()
22.07 对象操作流优化
将对象存储在集合中将集合当做对象写出,读取的时候就读取容器即可,
对容器进行操作
22.08 加上id号
注意:
要写出的对象必须实现Serializable接口才能被序列化
实现了Serializable接口可以添加id号作为标识,看错误的时候更清晰点
不是必须加id号
22.09 打印流的概述和特点
1、什么是打印流PrintStream
该流可以很方便的将对象的toString结果输出,并且自动加上换行,而且可以使用自动刷出的模式
PrintStream是OutputStream的子类
System.out就是一个PrintStream打印流 ,其默认向控制台输出信息
2、使用方式PrintWriter
是Writer的子类
打印:print(),println()
自动刷出:PrintWriter(OutputStream out, boolean autoFlush , String encoding)
打印流只操作数据目的
22.10 标准输入输出流概述和输出语句
1、什么是标准输入输出流
System.in是InputStream,标准输入流,默认可以从键盘输入读取字节数据
System.out是OutputStream,标准输出流,默认可以向Console(控制台)中输出字符和字节数据
2、修改标准输入输出流
修改输入流:System.setIn(InputStream)
修改输出流:System.setOut(PrintStream)
22.12 随机访问流概述和读写数据
1、随机访问流概述
RandomAccessFile概述,雌雄同体,既可以读也可以写
RandomAccessFile类不属于流,是Object类的子类,也属于IO包下的。但它融合了InputStream和OutputStream的功能
支持对随机访问文件的读取和写入
构造方法:
RandomAccessFile(File file,String mode)
RandomAccessFile(String name,String mode)String为文件路径
Mode:r只读 rw读和写
2、read、write、seek(设置指针)
22.13 数据输入输出流
1、什么是数据输入输出流
DataInputStream,DataOutputStream可以按照基本数据类型大小读写数据
例如按long大小写出一个数字,写出时该数据占8字节,读取的时候也可以按照long类型读取,一次读取8个字节
22.14 Properties的概述和作为Map集合的使用
1、Properties的概述
Properties不是流是一个双列集合,Properties是一个配置文件,父类是Hashtable。
Properties类表示了一个持久的属性集
Properties可保存在流中或从流中加载
属性列表中每个键及其对应值都是一个字符串
2、案例演示
22.15 Properties的特殊功能使用
1、Properties的特殊功能
public ObjectsetProperty(String key , String value)设置键值对
public StringgetProperty(String key)根据键获取值
publicEnumeration
2、案例演示
22.16 Properties的load和store功能
1、Properties的load和store功能
如何与IO流关联呢?就是load和store,load参数列表是输入流,store参数列表是输出流(字节字符都可以)
2、案例演示