JavaでOutputStreamへ書き込むときにゴミ(0x00)が入らないようにする方法

JavaでOutputStreamへ書き込むときにゴミ(0x00)が入らないようにする方法

CSS

 Javaのbyte配列の扱いでゴミが入るパターン。

スポンサーリンク
GoogleAdSence レクタングル(大)

OutputStreamに書き込むときにゴミが入ってしまう

 InputStreamから読み込むたびにOutputStreamに書き込むようなコードは、Javaではよくやると思います。

 ですがそのときに、書き込み範囲を指定しないとやはりbyte配列分の0x00が書き込まれてゴミになってしまう。

 例えばこういうコードです。

 C:\tmp\input.datは

だけの5バイトのファイルとします。

 これを実行するとC:\tmp\output.datが生成されますが、内容は「abcde」の後が0x00で埋められた、1024バイトのファイルになります。

必要な長さだけ書き込むようにする

 これもbyte配列ぶんだけ書き込まれてしまっているのが原因で、while文のところを次のように直すと解消されます。

 readで読み込んだ長さだけwriteで書き込むようにする、ということです。