为什么要使用DataOutputStream包装FileOutputStream?

prj*_*dhi 1 java

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

FileOutputStream fos = new FileOutputStream(args[0]);
DataOutputStream dos = new DataOutputStream(fos);
dos.writeByte('j');
Run Code Online (Sandbox Code Playgroud)

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

Jac*_*ack 6

Java中的Streams是根据Decorator设计模式定义的.

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

  • a FileOutputStream是一个具体组件,它提供写入映射到File的流的功能
  • a DataOutputStream是一个具体的装饰器,附加到另一个装饰器或组件,能够通过为您提供一种将基元写入流的方式来扩展功能,而无需关心底层装饰链中的内容