【发布时间】:2012-12-04 07:33:53
【问题描述】:
我看到两者都是数据“流”。在那种情况下,为什么认为它们不同?到底有什么区别?
评论 - 请不要关闭此问题。这是一种基本的东西,可以 在采访中让人们感到困惑。
更新 1 - 每个人似乎都在说同样的话——你从 IS 读取并写入操作系统。 所以,它们基本上是一样的。就像有水流过的管道。当您使用该管道中的水时,您将其称为 InputStream,当您将水泵入其中时,它称为输出流。真的有那么小吗?
UPDATE2 - 如果差异不是那么“大”,那么我们是否可以拥有一个 InAndOutStream 而不必为两个类(InputStream 和 OutputStream)编写代码?
【问题讨论】:
-
是的,就是这么简单。这是一个观点问题——你在“流”的哪一端。例如,查看 java 中的 ProcessBuilder 类。它允许您从您的 java 进程启动一个进程,然后该进程的输出流是您的输入流,反之亦然。
-
我也在考虑这些答案,我也想知道是否还有其他原因。我的猜测是,虽然这是原生 IO 的区别......
-
@Thihara - 是的,对我来说这看起来微不足道。但是,我觉得我们也需要看看这个 - 如果差异不是那么“大”,那么我们是否可以拥有一个 InAndOutStream 而不必为两个类(InputStream 和 OutputStream)编写代码?
-
基本的“流”概念是单向的(顾名思义)——所以有 2 个实现
-
“每个人似乎都在说同样的话——你从 IS 读取并写入 OS。所以,它们基本上是相同的”。不,他们不是。数据流的概念是一样的,但是写入和读取是不同的操作。为它们提供不同的类可以简化它们的实现和 API - 没有程序员会尝试从输出流中读取错误,因为编译器会阻止他调用读取方法。如果连续调用读取和写入,则实现不必跟踪幕后发生的事情。
标签: java inputstream outputstream