IO流

来源:互联网 发布:手机淘宝注册 编辑:程序博客网 时间:2024/06/16 13:34

流(stream):在目的地和源之间建立一根管道,数据通过管道流向目的地
细管道是按照字节传输的 (把数据拆分成byte来发送)
粗管道是按照字符传输的
分辨是在记事本里面如果能够读的懂就是字符流
不能够用记事本读懂的是字节流,也就是二进制
流是有方向的:始终是站在程序的角度
当源是程序的时候,是输出流
细管道—字节输出流–>OutputStream
粗管道—字符输出流–>Writer
当目的地是程序的时候,是输入流
细管道—字节输入流–>InputStream
粗管道—字符输入流–>Reader
字符流:面向字符的流,以字符为单位数日、输出数据,常用来操作字符类文件
对象流:面向对象的流,将内存中的对象进行序列化,或把序列化文件恢复成内存中的对象。可以长久的保存对象的信息及状态。

字节流:
所有面向字节的流都继承与InputStream类(输入流)或OutputStream类(输出流),这两个类都是抽象类,他的实现是由他的子类去实现,实现方式为目的地为哪里就用什么。比如,目的地是文件,则是FileInputStream

BufferedReader:
直接将另一根管子与这个对接

对象流在本质上是属于字节流的
对象的序列化与对象的反序列化
对象序列化:将对象以二进制流的形式进行输出
反序列化:将输入的二进制流转化为对象
序列化的类:ObjectOutputStream
对象序列化:
被序列化的类,必须实现Serializable这个接口,这个接口是一个标记接口,没有任何方法
ObjectOutputStream在设计时就是用来被对接的

处理流,接点流

反序列化:
从文件中把数据读出来,一来就是一个对象
这是第三种产生对象的方式
此时的读取文件是ObjectInputputStream

流的分类:
按照数据流的方向分为:
输入流和输出流
按照处理数据的最小单位不同分:
字节流和字符流
byte:OutputStream和InputStream
char:Writer和Reader
按照流的功能分:
节点流和处理流

流模型
流分类
方向
输入
输出
管道粗细
字符
字节
管道作用
节点流:File文件流
处理流:object对象流—–>序列化和反序列化以及serializalble接口
流类型
InputStream
下面的子类
OutputStream
下面的子类
Reader
下面的子类
Writer
下面的子类
常用类
File
表示文件或文件夹
文件分隔符
properties
map集合,kv对存放数据
对属性文件的操作
Load:读文件
store:写文件
流操作步骤
1、选择管道(字节/字符,输入/输出,另一端点)——>得到应该使用哪根管道
2、new出管道对象
3、操作管道(输入流—->read 输出流—->write 不管是字节流还是字符流)
4、关闭管道,close方法

0 0