1

最近、oracle.com の Java チュートリアルを読んでいて、I/O を理解しようとしています。しかし、非常に多くのものがあり、その多くは同じように見えます: データ ストリーム スキャナ プリントライター バッファされたストリーム ファイル I/O ストリーム フィルタリングされたストリーム など

具体的には、たとえば、スキャナーとデータ ストリームの違いは何ですか?

最初はすべてを把握できましたが、ストリームと i/os が多すぎました。このすべてを明確にすることができる優れたチュートリアルまたはWebサイトを知っている人はいますか. 私の理解不足が頭を悩ませ始めています。

4

2 に答える 2

1

これは答えるのが難しい質問です。ネットワークプログラミングを学んでいたとき、私は同じ混乱を経験したことを以前に知っています。
Lars Vogel のチュートリアルを見ることができます - 彼は物事を理解しやすくする優れたコードを書いています: http://www.vogella.com/tutorials/JavaIO/article.html

また、良書をお持ちの場合は、Java クラスに慣れてからの方が理解が深まるかもしれません。Elliot "Rusty" Harold が優れた Java Network プログラミングの本を作成しています: Java Network Programming

「java.io.*」クラスと、それぞれが何に使用されるかについて理解する必要があります。1 つのタイプのアプリケーションに対して 1 つの特定のクラスを使用するため、これほど多くのクラスがあるのには理由があります。

于 2014-02-06T22:57:42.963 に答える
1

は、 、 、 、、またはこれらのクラスから派生したものにアタッチScannerできます。消費者のように考えてください。頼むと物を食べます。FileStreamStringReadable

AStreamはソースです。一部の入力ストリームには、「I'm out of input!」という信号があります。すでに入力が不足しているストリームを引き続き使用すると、通常、Java は次の入力を待つか、単純に例外をスローします。ストリームが消費されると、それは永久に失われることに注意することが重要です。一部のリーダーは、ストリームを以前の時点に「リセット」するメカニズムを持っていますが、これらの派手なメカニズムは標準ストリームの一部ではありません。それらを川のように考えてください。川の一部を流したら、それはなくなります。

System.inInputStreamは、デフォルトでコンソールにフックされているの一例です。キーボードから直接フィードしていると想像してください。スキャナーをそれに接続して、ユーザーからの入力を消費しようとすることができます。Scanner はユーザーが入力したものをキャプチャできますが、それを変数に格納しないと、キーボードが再び入力することはありません。

于 2014-02-06T22:53:02.540 に答える