这是我从《java编程思想》中摘录的,看了他介绍的这一小节,我对InputStream有了很整体的认识。
“创建单一的结果流,却需要创建多个对象”
这句话说出了很多人的心声,感觉流很繁琐,一层嵌一层,但是我看了下边这个表格就不再糊涂了。
我觉得通过三部就不会弄混了:
首先:认识数据源
其次:选择正确的读取数据源的类
最后:用FilterInputStream的子类对读取数据源的类进行装饰。
InputStream的作用是用来表示那些从不同的数据源产生输入的类。
数据源包括:
1. 字节数组
2. String对象
3. 文件
4. 管道
5. 一个由其他种类的流组成的序列
6. 其他(Internet连接等)
每一种数据源都有相应的InputStream子类。另外FilterInputStream也属于一种InputStream,为“装饰器”类提供基类,其中,“装饰器”类可以把属性或有用的接口与输入流连接在一起。
类 | 功能 | 构造器参数 | 如何使用 |
ByteArrayInputStream | 运行讲内存的缓冲区当做InputStream使用 | 缓冲区,字节将从中取出 | 作为一个数据源:与FilterInputStream对象相连接以提供有用的接口 |
StringBufferInputStream | 将String转换成InputStream | 字符串。底层实现实际使用StringBuffer | --同上-- |
FileInputStream | 用于从文件中读取信息 | 字符串,表示文件名、文件或FileDescriptor对象 | --同上-- |
PipedInputStream | 产生用于写入相关PipedOutputStream的数据 | PipedOutputStream | 作为多线程中数据源:讲其与FilterInputStream对象相连以提供有用接口 |
SequenceInputStream | 将两个活多个InputSteam对象转换成单一的InputStream | 两个InputStream对象或者一个容纳InputStream对象的容器Enumeration | 同ByteAraayInputStream |
FilterInputStream | 抽象类,作为“装饰器”的接口。 |
|
|
大部分情况下直接使用jdk自带的io包是过期的、不推荐的、大概率会出错的做法。
请用apache的commons-io。
######无所谓 反正不搞这个的###### @Mr.Big : 这样随便说说你就信了?######这样子的啊######版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。