• ベストアンサー

入出力(FileOutputStreamについて)

以下のコードは独習Javaのコードです。これを実行すればテキストに0~11までの数字が書き込まれるはずなのですが・・・なぜかA~Hが横に並んで書き込まれてます。 どうなってるのかどなたか教えてください。 import java.io.*; class BufferedOutputStreamDemo {  public static void main(String args[])  {   try   {    FileOutputStream fos = new FileOutputStream(args[0]);    BufferedOutputStream bos = new BufferedOutputStream(fos);    for(int i = 0; i <12; i++)    { bos.write(i);    } bos.close();   }   catch(Exception e)   {     System.out.println("Exception : " +e);   }  } }

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

その本を読んだことがないので、「書き込まれるはず」の内容がよく分からない のですが、テキストエディタで、ファイルを開いてみて0~11が書かれている ことを期待するならば、PrintStream の println() メソッドを使います。 こんな感じ。 import java.io.*; class BufferedOutputStreamDemo {  public static void main(String args[])  {   try   {    FileOutputStream fos = new FileOutputStream(args[0]);    PrintStream ps = new PrintStream(fos); //※    for(int i = 0; i <12; i++)    {     ps.println(i); //※    }    ps.close(); //※   }   catch(Exception e)   {     System.out.println("Exception : " +e);   }  } }

その他の回答 (1)

  • sasadora
  • ベストアンサー率68% (59/86)
回答No.2

テキストデータとしての書き方についてはNo.1さんが書いてあるとおりです。 なぜ意図した結果にならないのか? OutputStreamはバイナリのデータを書き込むものです。 その本がそのサンプルコードで、0~11の文字が書かれたテキストファイルを書き込むと書いていたら間違いですが、 バイナリで0x01~0x0B(0~11)までのデータが書き込まれていると書いていたら、その本は間違っていません。

関連するQ&A