バイトストリームと文字ストリームについて説明してください。これらはどういう意味ですか? Microsoft Word文書はバイト指向ですか、文字指向ですか?
ありがとう
ストリームは、ファイルに順次アクセスする方法です。バイトストリームは、バイト単位でファイルにアクセスします。バイトストリームはあらゆる種類のファイルに適していますが、テキストファイルにはあまり適していません。たとえば、ファイルがUnicodeエンコーディングを使用していて、文字が2バイトで表されている場合、バイトストリームはこれらを個別に処理するため、変換を自分で行う必要があります。
文字ストリームは、ファイルを1文字ずつ読み取ります。文字ストリームは、適切に機能するためにファイルのエンコーディングを指定する必要があります。
Microsoft Word文書にはテキストが含まれていますが、文字ストリームではアクセスできません(テキストファイルではありません)。アクセスするには、バイトストリームを使用する必要があります。
ByteStreams:
バイトストリーム に関するOracleのドキュメントページから:
プログラムはバイトストリームを使用して、8ビットバイトの入出力を実行します。すべてのバイトストリームクラスは
InputStream
とOutputStream
から派生しています。
使用する場合:
バイトストリームは、最も基本的なI/Oにのみ使用する必要があります。
使用しない場合:
読み取りにバイトストリームを使用しないでください文字ストリーム
例えばテキストファイルを読み取るには
文字ストリーム:
文字ストリーム に関するOracleのドキュメントページから:
Javaプラットフォームは、Unicode規則を使用して文字値を格納します。文字ストリームI/Oは、この内部形式をローカル文字セットとの間で自動的に変換します。
すべての文字ストリームクラスは、Reader
およびWriter
から派生しています。
文字ストリームは多くの場合、バイトストリームの「ラッパー」です。文字ストリームはバイトストリームを使用して物理I/Oを実行し、文字ストリームは文字とバイト間の変換を処理します。
汎用のバイトから文字への「ブリッジ」ストリームには、InputStreamReader
とOutputStreamWriter
の2つがあります。
使用する場合:
文字のSocket
またはFile
から文字ストリームを読み取るには
まとめ:
Byte streamは、一度に1バイトを読み書きします。より洗練されたデータを扱う間、バイトストリームの使用を避ける必要があります。
Character Streamおよびその他の使用可能なストリームを使用して、高度なデータを処理する必要があります。
1.文字指向はデータ型に関連付けられています。文字列型または文字型のみを読み取ることができますが、バイト指向はどのデータ型にも関連付けられていません。指定するだけで、任意のデータ型のデータを読み取ることができます(文字列を除く)。
2.文字指向は文字ごとに読み取りますが、バイト指向はバイトごとに読み取ります
3.文字指向のストリームは文字エンコード方式(UNICODE)を使用しますが、バイト指向のストリームはエンコード方式を使用しません
4.文字指向のストリームは、リーダーおよびライターストリームとしても知られています。バイト指向のストリームは、データストリームとして知られています。データ入力ストリームおよびデータ出力ストリーム
this をお読みください。バイトと文字の違い(および他の便利なものの負荷)について説明します
文字ストリームは、ファイルを1文字ずつ読み取ります。文字ストリームは16ビット文字を読み取ることができます(バイトストリームは8ビット文字を読み取ります)。文字ストリームは、暗黙的に8ビットデータを16ビットデータに、またはその逆に変換できます。文字ストリームは、ASCII、Unicode、UTF-8、UTF-16などのすべてのタイプの文字セットをサポートできます。ただし、バイトストリームはASCII文字セットにのみ適しています。Javaプラットフォームは、Unicode規則を使用して文字値を格納します。文字ストリームI/Oは、この内部形式をローカル文字セットとの間で自動的に変換します。
イメージファイルやサウンドファイルなどのバイナリデータで作業している場合を除き、リーダーとライターを使用して、文字ストリームで情報を読み書きする必要があります。