如何让 DataOutputStream 将 bool 或 integer 写入 txt 文件?

How can I make DataOutputStream write a bool or integer to a txt file?

public static void outputFile() {
    HabitItem it;
    try {
        File path = new File("output.txt");
        FileOutputStream fout = new FileOutputStream(path);
        DataOutputStream dos = new DataOutputStream(fout);
        while (!stackHabitItems.isEmpty()) {
            it = stackHabitItems.pop();
            dos.writeChars("<\n");
            for(int i = 0; i < 7; i++) {
                if (it.isDayCompleted[i]) {
                    dos.writeInt(1);
                }
                else {
                    dos.writeInt(0);
                }
            }
            dos.writeChars("\n");

            dos.writeInt(it.id);

            dos.writeChars("\>\n");
        }
        fout.close();
    }
    catch (Exception e) {
        System.out.println("Failed to open file output.txt");
    }
}

我想做的就是将一个布尔数组和一个整数写入 < />

所包含的文件中

我的文件可能看起来像这样(假设迭代一次) < 1个 0 1个 0 0 0 1个 42 >

但是 dos.writeInt 无法产生正常输出。相反,它显示 <
> 其中空格用方块填满

为什么我的代码不起作用?我觉得我在正确使用 DataOutputStream。

直接尝试 PrintStream 或您的 FileOutputStream,它将产生人类可读的结果。

您可以这样尝试(int 之间可能仍需要分隔符)

public static void outputFile() {
    File path = new File("output.txt");
    try (FileOutputStream fout = new FileOutputStream(path);
          PrintWriter dos = new PrintWriter(fout)) {
        while (!stackHabitItems.isEmpty()) {
            HabitItemit = stackHabitItems.pop();
            dos.println("<");
            for(int i = 0; i < 7; i++) {
                if (it.isDayCompleted[i]) {
                    dos.print(1);
                }
                else {
                    dos.print(0);
                }
            }
            dos.println();

            dos.print(it.id);

            dos.println("\>");
        }
    } catch (Exception e) {
        System.out.println("Failed to open file output.txt");
    }
}

How can I make DataOutputStream write a bool or integer to txt file?

你不能。布尔值和整数是原始数据类型。您可以 或者 将它们作为 binaryDataOutputStream 写入 binary 文件, 将它们作为 Strings 写入带有 Writerwriter.write(""+bool).

等结构的文本文件