0

質問のすべてはタイトルにあります。

出力の「私の名前」の後に意味不明な部分がたくさんあります。

import java.io.*;

public class DOStry {

public static void main(String[] args) {

    String file = "file.txt";
    String stra = "my name";
    int intb = 1;
    double douc = 2.5;
   char chad = 'f';

    try
    {

        FileOutputStream fos = new FileOutputStream(file);
        DataOutputStream dos = new DataOutputStream(fos);

        dos.writeUTF(stra);
        //i don't know why it prints gibberish after my name. 
        dos.writeInt(intb);
        dos.writeDouble(douc);
        dos.writeChar(chad);

        dos.flush();
        dos.close();

        }
    catch (IOException e)
    {
        System.out.println("IOException : " + e);
    }

    }
}

私は良くありません、私は何を逃したのですか?DataOutputStream を学習しようとしています。

4

1 に答える 1

3

DataOutputStream は、テキストではなくバイナリを印刷するためのものであり、意味を理解するにはバイナリ ファイルとして読み取る必要があります。テキストのようにその一部を読むことができるという事実は、そうであるとは限りません。

次のことをお勧めします。これらはすべてテキストとして読むことができます。

FileWriter fw = new FileWriter(file);
PrintWriter pw = new PrintWriter(fw);

pw.println(stra);
pw.println(intb);
pw.println(douc);
pw.println(chad);

dos.close();

つまり、バイナリとテキストを混在させると、混乱する可能性が高くなります。

于 2013-06-21T02:15:45.227 に答える