1

ファイルに書き込むためにJavaIOのDataOutputStreamを使用していますが、プログラムを実行すると、正しい出力が得られず、代わりに奇妙な文字が表示されます。-writeUTF(String str)メソッドを使用して文字列を書き込むことだけが機能することに気づきましたが、writeBytes(String s)を使用しても、スペース文字と思われる奇妙な文字が生成されます-ファイルへの書き込みのコード部分は以下のとおりです。考えられる原因、おそらくエンコーディングに関連するものですか?前もって感謝します。

FileOutputStream fs= new FileOutputStream("Path/to/my/file");

DataOutputStream ds = new DataOutputStream(fs);


ds.writeBoolean(false);
ds.writeChar('A');
ds.writeInt(42);
ds.writeBytes("test1");
ds.writeUTF("test2");


fs.close();
4

2 に答える 2

2

このDataOutputStreamクラスは、文字のストリームではなく、バイトのストリームを書き込むように定義されています。このバイトのストリームは、人間が読み取ることができるかどうかに関係なく、効率的かつ移植可能に格納されることを目的としています。

人間が読めるテキストファイルが必要な場合は、XMLライターを使用してください。

ちなみに、あなたが得る出力正しいです、それはむしろあなたの理解が間違っています。おそらく、クラスに付属のドキュメントを読んで理解する必要があります。

于 2011-09-08T01:23:33.373 に答える
1

データストリームは、バイナリデータ用です。DataOutputStreamは整数をバイナリ形式で書き込みます。つまり、整数を4バイトに分割し、それらを書き込みます。

于 2011-09-08T01:28:17.560 に答える