java - 为什么这个 DataOutputStream 在我的名字后面打印乱码?

标签 java file-io dataoutputstream

问题中的所有内容都在标题中。

输出中“我的名字”后面有很多乱码。

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。

最佳答案

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();

简而言之,如果混合二进制和文本,您更有可能感到困惑。

关于java - 为什么这个 DataOutputStream 在我的名字后面打印乱码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17226694/

相关文章:

c - 尝试将文件中的某些值读入 C 中的数组

Java 基本数据类型 byte 和 Byte 类

java - 通过套接字将 int 从 Java 客户端写入到 C 服务器

java - 如何从字符串写入二进制文件并将其再次检索到字符串?

java - 初始化变量Java

java - 按下事件时的 Android 小部件按钮

java - 如何在 Rythm 中转义 @ 符号?

java - 如何用java锁定Excel文件的读写?

java - 将文件写入 sdcard

c++ - 文件流实际上是如何工作的?