InputStream 和 OutputStream - 如何区分歧义

InputStream and OutputStream - How to differentiate ambiguity

在我看来,InputStreamOutputStream 是 I/O 的不明确名称。

InputStream可以认为是"to input into a stream",OutputStream可以认为是"get output of a stream".

毕竟,我们从 "input" 流中读取,但您不应该从 "output" 中读取吗?

选择这两个名称背后的基本原理是什么?记住 Input/Output 流而不混淆另一个的好方法是什么?

将您的 program/code 视为 演员

  • Actor 想要读取内容时,它会寻找一个句柄来 InputStream 导致它的这个流将提供输入。因此,当您阅读它时。
  • Actor 想要写出一些东西时,它会寻找句柄 到 OutputStream 然后开始写入句柄 其余的部分。同样你写信给它。

我希望这个答案。我只是将我的代码可视化为经典的 Stick Diagram Actor,将 InputStream 和 OutputStream 可视化为您与之交互的实体。

流的命名不是根据您在代码中使用它们的方式,而是根据它们 完成的工作InputStream 完成从程序外部某处(控制台、文件等)读取 input,而 OutputStream 完成写入 output 到其他地方(同样,控制台,文件等)。您的 Java 代码只是这种情况下的中介:为了使用输入,您必须从流中读取它,为了产生输出,您首先必须向流中写入一些内容.

命名的问题只是流的设计总是有一些东西进入和一些东西出来 - 你总是可以读写 on/with 任何流。您只需要记住,它们的命名是因为它们执行的更重要的任务:与您的代码之外的内容进行交互。