0

int i をファイルに出力するための次の 2 つのコード フラグメントの出力の違いを説明してください。

私)

PrintWriter outfile = new PrintWriter(new FileWriter("ints.txt"));
outfile.print(i);

ii)

DataOutputStream out = new DataOutputStream(new FileOutputStream("ints.dat"));
out.writeInt(i);

プリンターライターは文字列を受け取り、それをユニコード文字のストリームに変換すると思いますが、データ出力ストリームはデータ項目を一連のバイトに変換します。

さらに何を追加しますか?

4

3 に答える 3

1

ファイルにはバイトのみが含まれているため、最終的にはすべてバイトになります。

String はすでに文字のストリームです。String をファイルに書き込むときは、それをバイトのストリームに変換する必要があります。

int は 4 バイトです。writeInt() は、ビッグ エンディアン番号に変換します。

于 2011-04-22T12:52:51.520 に答える
1

DataOutputStreamjavadocから:

データ出力ストリームを使用すると、アプリケーションはプリミティブ Java データ型を移植可能な方法で出力ストリームに書き込むことができます。その後、アプリケーションはデータ入力ストリームを使用してデータを読み戻すことができます。

javadocからPrintWriter

オブジェクトのフォーマットされた表現をテキスト出力ストリームに出力します。

すべては単なるバイトですが、それらは異なるものを表しています。aを使用すると、プリミティブ Java 型にDataOutpuStream直接読み戻すことができるバイトを取得できますが、a を使用すると取得できません。intPrintWriter

于 2011-04-22T13:01:53.520 に答える
0

すでに述べたことを繰り返す可能性がありますが、より明確にするために:

printwriter を使用し、int 値が 65 であると言うと、print writer は '6' と '5' の 2 文字を出力します。

出力ストリームを使用すると、バイトが出力されるため、値が 65 のバイトがファイルに書き込まれます。これはたまたま 'A' の ASCII/UTF-8 の文字コードであるため、テキスト エディタでは、上記のように「6」の後に「5」が続くのではなく、「A」の文字が表示されます。

于 2011-04-22T13:05:57.390 に答える