本文由我司收集整编,推荐下载,如有疑问,请与我司联系
Java
?/p>
InputStream
装饰器模式的大家?/p>
2018/02/26 0
你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会
有更好的排版效果和功能?/p>
此外,本篇博文为本人
Pushy
原创,如需转载请注明出
处:
https://pushy.site/posts/1519819757
本文写在
po
主初?/p>
JAVA
时,在学?/p>
inputStream
摸不着头脑,受
Java
IO-
InputStream
家族
-
装饰者模式一文启发,因此在理清思路时写下本文。因为初学,
如有错误,望指正?/p>
因为和输入流与之对应的还有输出流(即
OutputStream
),在此只针对输入流
InputStream
讨论?/p>
1.
家族老大?/p>
一说起家族中的老大?/p>
InputStream
自然是当仁不让,?/p>
java
的输
入流操作的类中,衍生出的基本子类有,可以理解为这些都?/p>
InputStream
它的孩子
(子类)?/p>
InputStream
作为所有输入流中的超类,包含从输入流读取数据的基本方法,所?/p>
的具体类都包含了这些方法,例?/p>
read()
方法,它将读取一个字节并将其?/p>
int
类型
返回,当到达输入流的结尾时,返回
-1
,因此我们常常这样操作:
byte data;while ((data = (byte) bis.read()) != -1) { //
当没有达到输入流的结尾时?/p>
继续读取并打印转换成
char
类型的字符:
System.out.print((char)
data);}
这段代码?/p>
了解不要紧,现在我们开始正式介?/p>
InputStream
家族?/p>
2.
家族孩子?/p>
家族中的子类各司其职,老大
FileInputStream
处理文件流,老二
ByteArrayInputStream
处理字节数组?/p>
...
例如,我们来看下老大是怎么工作的:
import java.io.*;import java.util.Date;public class FileInputStreamTest { public static
void
main(String[]
args)
throws
Exception{
try
{
//
创建
FileInputStream
对象?/p>
FileInputStream fis = new
FileInputStream(“E:
\\
text.txt?;
//
得到起始时间?/p>
long start
= System.currentTimeMillis( ); byte byteData; while ((byteData = (byte) bis.read()) != -1)