23

java.io多くの異なるI/Oストリーム (FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedStreams... など) があり、それらの違いを判断するのに混乱しています。あるストリーム タイプが別のストリーム タイプよりも優先される例は何ですか? また、それらの実際の違いは何ですか?

4

7 に答える 7

42

ストリーム:一度に 1 バイト。バイナリデータに適しています。

リーダー/ライター:一度に 1 文字。テキストデータに適しています。

「バッファリング」されたもの:一度に多くのバイト/文字。ほぼ常に良好です。

于 2009-07-21T15:47:37.110 に答える
27

Javaを学ぶとき、私はjava.ioについてこのメンタルスキームを作成しました。

ストリーム

  • バイト指向ストリーム(8ビット)
  • Java.classファイルなどのバイナリデータに適しています
  • 「マシン指向」のデータに適しています

リーダー/ライター

  • char(utf-16)指向のストリーム(16ビット)
  • Javaソースなどのテキストに適しています
  • 「人間指向」のデータに適しています

緩衝

  • 他に証明されない限り、常に有用です
于 2009-07-21T15:55:38.017 に答える
12

これは大きな話題です!I /O Streams を読むことから始めることをお勧めします。

I/O ストリームは、入力ソースまたは出力先を表します。ストリームは、ディスク ファイル、デバイス、他のプログラム、メモリ アレイなど、さまざまな種類のソースと宛先を表すことができます。

ストリームは、単純なバイト、プリミティブ データ型、ローカライズされた文字、オブジェクトなど、さまざまな種類のデータをサポートします。一部のストリームは単にデータを渡します。他の人は、有用な方法でデータを操作および変換します。

于 2009-07-21T15:47:03.213 に答える
8

それぞれの名前を単語に分けてください。それぞれの大文字は異なる単語です。

  • ファイル入力ストリームは、ストリームを使用してファイルから入力を取得することです。
  • ファイル出力ストリームは、ストリームを使用してファイルに出力を書き込むことです。

などなど

mmyersが書いたように:

ストリーム:一度に1バイト。

リーダー/ライター:一度に1文字。

バッファリング*:一度に多数のバイト/文字。

于 2009-07-21T15:52:46.260 に答える
3

あなたが言及した特殊化は、さまざまなデータ ソースへの標準インターフェイスを提供するために使用される特定のタイプです。たとえば、FileInputStream と ObjectInputStream はどちらも InputStream インターフェイスを実装しますが、それぞれファイルとオブジェクトを操作します。

于 2009-07-21T15:48:18.747 に答える
2

バイト ストリームは、Java 1.0 で文字とバイトの両方に広く使用されているストリーム タイプです。Java 1.0 以降は廃止され、文字ストリームが重要な役割を果たしています。すなわち、例えば

BufferedReader はソースから文字を取得し、そのコンストラクターは BufferedReader(Reader inputReader) のようになります。

ここで、Reader は抽象クラスであり、その具象クラスの 1 つは InputStreamReader であり、バイトを文字に変換し、キーボード (System.in) から入力を受け取ります...

BufferedReader : ストリームから文字を読み取る内部バッファーが含まれます。内部カウンタは、read() を通じてバッファに供給される次の文字を追跡します。InputStreamReader は入力をバイトとして受け取り、内部的に文字に変換します。

于 2009-11-10T10:25:01.530 に答える