3

一个DataOutputStream 可以包装一个FileOutputStream,但我不明白为什么在这里使用它。

FileOutputStream fos = new FileOutputStream(args[0]);
DataOutputStream dos = new DataOutputStream(fos);
dos.writeByte('j');

最后一行与fos.write('j');DataOutputStream 在这种情况下添加了什么?即为什么会有?

4

1 回答 1

9

Java 中的流是根据装饰器设计模式定义的。

这意味着您可以将特定功能(在特定流类中实现)与另一个流组合在一起。这允许您自定义可以对流执行的操作。在您的具体示例中

  • aFileOutputStream是一个具体组件,它提供写入映射到文件的流的功能
  • aDataOutputStream是一个具体的装饰器,它附加到另一个装饰器或组件,能够通过为您提供一种将原语写入流的方法来扩展功能,而无需关心底层装饰链中的内容
于 2012-05-30T15:21:23.660 回答