您的位置:首页 > 职场人生

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

2015-11-10 19:14 507 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

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.11 两种方式实现键盘录入

1、BufferedReader 的readLine方法

2、Scanner



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个字节

2、使用方式


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<String> string PropertyNames()将键存入枚举,根据枚举再获取键和值

2、案例演示



22.16 Properties的load和store功能

1、Properties的load和store功能

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

2、案例演示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: