1

我最近一直在阅读 oracle.com 上的 java 教程,我正在尝试理解 I/O。但是有很多东西,其中很多看起来是相同的,例如:数据流扫描仪打印器缓冲流文件I/O流过滤流等。

具体来说,例如,扫描仪和数据流之间有什么区别?

起初我可以掌握这一切,但流和 i/os 太多了。有没有人知道一个很好的教程或网站可以让这一切变得清晰。我缺乏理解开始变得烦人。

4

2 回答 2

1

AScanner可以附加到,FileStream,StringReadable从这些类派生的任何内容。把它想象成一个消费者。当你要求它吃东西时,它会吃东西。

AStream是一个源。一些输入流有一个信号说“我没有输入!” 如果您继续使用已经没有输入的流,Java 通常会等待更多输入或简单地抛出异常。需要注意的是,一旦一个流被消费,它就永远消失了。一些阅读器具有将流“重置”到较早点的机制,但这些花哨的 schmancy 机制不是标准流的一部分。把它们想象成河流。一旦你让部分河流流过,它就消失了。

System.inInputStream是默认情况下连接到控制台的一个示例。想象一下,它直接从您的键盘输入。您可以将 Scanner 附加到它并尝试使用用户的输入。Scanner 可以捕获您键入的内容,但如果您不将其存储在变量中,您的键盘将不会再次自行键入。

于 2014-02-06T22:53:02.540 回答
1

这是一个很难回答的问题。我知道以前在学习网络编程时,我也有同样的困惑。
您可以查看 Lars Vogel 的教程 - 他编写了很好的代码,使事情变得易于理解:http ://www.vogella.com/tutorials/JavaIO/article.html

此外,如果您有一本好书,那么在熟悉 Java 类之后可能会更有意义。Elliot "Rusty" Harold 制作了一本很好的 Java 网络编程书籍: Java 网络编程

您需要熟悉“java.io.*”类以及每个类的用途。有这么多是有原因的,因为您会为一种类型的应用程序使用一个特定的类。

于 2014-02-06T22:57:42.963 回答