读Core Java2 7
Java核心技术第7版的579页,
DataInputStream din=new DataInputStream(
new BufferedInputStream(
new FileInputStream("employee.dat")
)
);
用FileInputStream构造DataInputStream流
为什么还要加一个BufferedInputStream呢?
如何确定这么多层的构造函数呢?我怎么知道
要得到DataInputSteam需要BufferedInputStream呢?
Java核心技术第7版的579页,
DataInputStream din=new DataInputStream(
new BufferedInputStream(
new FileInputStream("employee.dat")
)
);
用FileInputStream构造DataInputStream流
为什么还要加一个BufferedInputStream呢?
如何确定这么多层的构造函数呢?我怎么知道
要得到DataInputSteam需要BufferedInputStream呢?
都可以往里面扔InputStream的子类。
只不过BufferedInputStream对FileInputStream再次进行了包装,可以采
用缓冲区提高读取的效率。
DataInputStream din=new DataInputStream
(
pbin=new PushbackInputStream(
new BufferedInputStream(
new FileInputStream("employee.dat")
)
)
);
这段代码中,为什么要用PushbackInputStream去构造
生成DataInputStream呢?
最后生成的DataInputStream从PushbackInputStream
上得到什么功能了呢?它是不可以使用PushubackInputStream类的成员方法啊
这好比你将一堆砖头从A地搬到B地,不使用缓冲就好比你一次搬一块,使用缓冲则好比你用推车,先把车装满再一次搬走,显然后者效率更高。至于如何构造一个流,方式是多种多样的,DataInputStream不一定要用一个BufferedInputStream来构造,只要是InputStream的子类都可以,所有输入输出流都采用这种类似的方式来构造,这样,你不需要遵循特定的顺序,只要依照你的要求来构造就可以,比如你完全可以先构造一个DataInputStream,再构造在此基础上构造BufferedInputStream,最终都是你想要的,这好比你穿衣服,可以先穿上衣,再穿裤子,也可以先穿裤子,再穿上衣,得到的结果是一样的。这种方式叫做“Decorating(装饰)”,有兴趣可以看看设计模式中的Decorator模式。
~~~~~~~~~~~~~~~~~~
造BufferedInputStream,最终都是你想要的
~~~~~~~~~~~~~~构造顺序还是有关系的吧
如果这样构造
DataInputStream din=new DataInputStream(
new BufferedInputStream(
new FileInputStream("employee.dat")
)
);
得到的是一个DataInputStream的对象
如果
BufferedInputStream din=new BufferedInputStream(
new DataInputStream(
new FileInputStream("employee.dat")
)
);
得到的是BufferedInputStream的对象,对象不同,可以调用的
方法就不同,对吗?
(
pbin=new PushbackInputStream(
new BufferedInputStream(
new FileInputStream("employee.dat")
)
)
);
这段代码中,为什么要用PushbackInputStream去构造
生成DataInputStream呢?
最后生成的DataInputStream从PushbackInputStream
上得到什么功能了呢?它是不可以使用PushubackInputStream类的成员方法啊 这个问题 如何解释?????!!!!!