Java IO 流的相关知识

I-O / Input /Output

IO体系:
流式 : 字符流,字节流
非流式 :File RandomAccessFile
字节流,字符流,处理流(是什么,有什么区别)
IO中涉及的设计模式 -> 装饰器模式,适配器模式
*

                              IO体系  
            流式                                     非流式
InputStream outputStream(操作字节)          File     RandomAccessFile
Reader    Writer(操作字符)

数据源:磁盘
远程服务器:Socket

一 .IO体系:
流:
流的本质:对数据的传输,是字节的一个集合,有方向的数据传输
流的作用:在数据源和程序之间建立通道

数据源 ----> 程序 (输入流)
数据源 <— 程序 ( 输出流)

流的划分:
1.流按照方向划分:
Input:输入流:从数据源/介质(磁盘,远程服务器,键盘,鼠标)到程序的过程
output:输出流:从程序将数据流向数据源/介质(磁盘,远程服务器,屏幕)

2.流处理单位划分:
字节流:二进制(一个字节是8个bit位)例:010101 , (AVI[视频],音频等)
字符流:字符形式存储
字符和字节的区别:(字节相对高效)
基本单位不同:字节是按照字节为单位读取(8bit)/ 字符是按照字符单位读取
处理对象不同:字节流可以处理任意类型对象(视音频)/ 字符流只能处理字符

3.按照流的角色划分:
节点流:程序直接连接到实际的数据源,和实际的输入/输出节点连接 (低级流)
处理流:对已存在的流进行连接和封装,通过封装后的流实现数据的读,写功能。(高级流)

字节流(二进制流):
1.二进制数据:将数据解释成原始的二进制数
2.byte数据:读/写均为字节(byte)数据
3.效率高:二进制数据不需要编码和解码,比文本i/o效率高
4.可移植(与主机的编码方式无关)

字符流:
1.字符数据:字符流将原始数据解释成字符的序列
2.依赖编码方式:文本数据存储依赖文件编码方式,字符流的输入和输出需要进行编码和解码

节点流:
(介质流 Media Stream)也叫做(原始流 Ram Stream) 主要指从具体介质上读取 / 写入数据的类
节点: 文件,内存缓冲区 (Byte数组,char数组,StringBuffer对象)

过滤流:(处理流)
主要指FilterInputStream/FileOutStream和FilterReader/FilterWriter的子类
过滤流使节点流作为输入或者输出,对其包装的节点流进行特定的处理

IO的设计模式:
装饰器模式:
在不改变原有类的使用和继承上,动态扩展新的功能,创建包装对象出来,也就是将当前的原有类做装饰作用。
FileInputStream通过InputStream抽象类装饰成BufferInputStream ,DataInputStream

适配器模式:
将不合乎期望的类或者接口转换适配成满足要求的类或接口。
将BufferInputStream,DataInputStream通过InputStream 适配成FileInputStream

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值