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 回答