黑马程序员——基础知识——功能流

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Day22

前面讲的都是基本的输入输出流,今天讲各种功能流

22.01 序列流

       1、什么是序列流 继承自InputStream

              相当于讲输入流管子连接起来了,大管套小管,写一次读取就可以了。

              序列流可以把多个字节输入流整合成一个,从序列流中读取数据时,将从被整合的第一个流开始读,读完一个之后继续读第二个,以此类推。

       2、使用方式

              整个两个:SequenceInputStream(InputStream, InputStream)

黑马程序员——基础知识——功能流_第1张图片

22.02 序列流整合多个

       整合多个:SequenceInputStream(Enumeration 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.11 两种方式实现键盘录入

       1、BufferedReader 的readLine方法

       2、Scanner

黑马程序员——基础知识——功能流_第2张图片

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(设置指针)


黑马程序员——基础知识——功能流_第3张图片

22.13 数据输入输出流

       1、什么是数据输入输出流

       DataInputStream,DataOutputStream可以按照基本数据类型大小读写数据

       例如按long大小写出一个数字,写出时该数据占8字节,读取的时候也可以按照long类型读取,一次读取8个字节

       2、使用方式黑马程序员——基础知识——功能流_第4张图片

22.14 Properties的概述和作为Map集合的使用

       1、Properties的概述

              Properties不是流是一个双列集合,Properties是一个配置文件,父类是Hashtable。

              Properties类表示了一个持久的属性集

              Properties可保存在流中或从流中加载

              属性列表中每个键及其对应值都是一个字符串

       2、案例演示

黑马程序员——基础知识——功能流_第5张图片

22.15 Properties的特殊功能使用

       1、Properties的特殊功能

              public ObjectsetProperty(String key , String value)设置键值对

              public StringgetProperty(String key)根据键获取值

              publicEnumeration string PropertyNames()将键存入枚举,根据枚举再获取键和值

2、案例演示


22.16 Properties的load和store功能

       1、Properties的load和store功能

              如何与IO流关联呢?就是load和store,load参数列表是输入流,store参数列表是输出流(字节字符都可以)

       2、案例演示



你可能感兴趣的:(黑马程序员——基础知识——功能流)