web-dev-qa-db-ja.com

バイトストリームと文字ストリーム

バイトストリームと文字ストリームについて説明してください。これらはどういう意味ですか? Microsoft Word文書はバイト指向ですか、文字指向ですか?

ありがとう

41
JavaUser

ストリームは、ファイルに順次アクセスする方法です。バイトストリームは、バイト単位でファイルにアクセスします。バイトストリームはあらゆる種類のファイルに適していますが、テキストファイルにはあま​​り適していません。たとえば、ファイルがUnicodeエンコーディングを使用していて、文字が2バイトで表されている場合、バイトストリームはこれらを個別に処理するため、変換を自分で行う必要があります。

文字ストリームは、ファイルを1文字ずつ読み取ります。文字ストリームは、適切に機能するためにファイルのエンコーディングを指定する必要があります。

Microsoft Word文書にはテキストが含まれていますが、文字ストリームではアクセスできません(テキストファイルではありません)。アクセスするには、バイトストリームを使用する必要があります。

54
kgiannakakis

ByteStreams

バイトストリーム に関するOracleのドキュメントページから:

プログラムはバイトストリームを使用して、8ビットバイトの入出力を実行します。すべてのバイトストリームクラスはInputStreamOutputStreamから派生しています。

enter image description here

使用する場合:

バイトストリームは、最も基本的なI/Oにのみ使用する必要があります。

使用しない場合:

読み取りにバイトストリームを使用しないでください文字ストリーム

例えばテキストファイルを読み取るには

文字ストリーム:

文字ストリーム に関するOracleのドキュメントページから:

Javaプラットフォームは、Unicode規則を使用して文字値を格納します。文字ストリームI/Oは、この内部形式をローカル文字セットとの間で自動的に変換します。

すべての文字ストリームクラスは、ReaderおよびWriterから派生しています。

文字ストリームは多くの場合、バイトストリームの「ラッパー」です。文字ストリームはバイトストリームを使用して物理I/Oを実行し、文字ストリームは文字とバイト間の変換を処理します。

汎用のバイトから文字への「ブリッジ」ストリームには、InputStreamReaderOutputStreamWriterの2つがあります。

使用する場合:

文字のSocketまたはFileから文字ストリームを読み取るには

まとめ

Byte streamは、一度に1バイトを読み書きします。より洗練されたデータを扱う間、バイトストリームの使用を避ける必要があります。

Character Streamおよびその他の使用可能なストリームを使用して、高度なデータを処理する必要があります。

11
Ravindra babu

1.文字指向はデータ型に関連付けられています。文字列型または文字型のみを読み取ることができますが、バイト指向はどのデータ型にも関連付けられていません。指定するだけで、任意のデータ型のデータを読み取ることができます(文字列を除く)。

2.文字指向は文字ごとに読み取りますが、バイト指向はバイトごとに読み取ります

3.文字指向のストリームは文字エンコード方式(UNICODE)を使用しますが、バイト指向のストリームはエンコード方式を使用しません

4.文字指向のストリームは、リーダーおよびライターストリームとしても知られています。バイト指向のストリームは、データストリームとして知られています。データ入力ストリームおよびデータ出力ストリーム

5
Urjit

this をお読みください。バイトと文字の違い(および他の便利なものの負荷)について説明します

3
dty

文字ストリームは、ファイルを1文字ずつ読み取ります。文字ストリームは16ビット文字を読み取ることができます(バイトストリームは8ビット文字を読み取ります)。文字ストリームは、暗黙的に8ビットデータを16ビットデータに、またはその逆に変換できます。文字ストリームは、ASCII、Unicode、UTF-8、UTF-16などのすべてのタイプの文字セットをサポートできます。ただし、バイトストリームはASCII文字セットにのみ適しています。Javaプラットフォームは、Unicode規則を使用して文字値を格納します。文字ストリームI/Oは、この内部形式をローカル文字セットとの間で自動的に変換します。

イメージファイルやサウンドファイルなどのバイナリデータで作業している場合を除き、リーダーとライターを使用して、文字ストリームで情報を読み書きする必要があります。

0
V.Dev