Android 学习笔记(8)之JavaIO原理

关键点  修饰模式 (Context也是装饰模式)
装饰模式原理
1,组件对象接口 Component
2,Decorator 所有装饰器的抽象父类  内部持有Component对象
3,ConcreteComponent具体的装饰器对象。

对象下面的 
InputStream 就是组件对象接口  里面定义read()
FilterInputStream 装饰器的抽象父类  持有InputStream 对象  重写read()加功能
BufferedInputStream 等就是具体的装饰器对象。 具体实现read()

输入流和输出流
字节流  图片 RAR EXE都是用字节流读写
字符流  文本文件,xml等
5个类一个接口
File/OutputStream /InputStream /Writer /Reader
Serializable
1,流式部分  上面  OutputStream /InputStream /Writer /Reader

2,非流式部分  File  RandomAccessFile(断点续传) FileDescriptor(/)等
断点续传原理   请求下载 需要送文件已经下载的地方 也就是断点的地方

3,其他部分  权限和安全等系统类 如FileSystem

装饰模式
DataOutputStream out = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(file)));

字节流  学习曲线 OutputStream(抽象)->FileOutputStream/FilterOutputStream -> DataOutputStream ->bufferedOutputStream
对应InputStream

FileOutputStream/FilterOutputStream  最基本类为所有装饰类提供基准

BufferedOutputStream 本地缓存了buf[]  减少对磁盘访问次数,提升性能

FilterOutputStream此类没有具体作用,只是装饰模式的封装

字符流的学习  
 Writer- >FilterWriter->BufferedWriter->OutputStreamWriter->FileWriter->其他
reader 和 Stream最大的区别我认为是它包含了一个readline()接口

BufferedWriter/BufferedReader 缓存减少对磁盘访问次数,提升性能

OutputStreamWriter/InputStreamReader 输入字符转换字节流桥梁(转换类)

 FileReader  文件字符输入流
 FileWriter 文件字符输出流

两者区别。
字节流操作时不使用缓存区   即使不关闭资源close 也能输出文件
字符流操作会使用缓存区的  不关闭资源,不会输出内容。可以使用flush 强制刷新缓存区

使用场景
一般都是使用字节流  图片等都是字节。

RandomAccessFile (分段下载,断点续传) 可读可写类
构造RandomAccessFile raf = newRandomAccessFile(File file, String mode);
mode  r/w/rw
seek(int index);可以将指针移动到某个位置开始读写;
setLength(long len);给写入文件预留空间:
write/read等方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值