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

时间:2015-12-09 07:57:11

标签: java fileoutputstream dataoutputstream

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");
    }
}

我试图做的就是将一个布尔数组和一个整数写入一个由&lt;包围的文件中。 /&GT;

我的文件可能看起来像这样(假设一次迭代)     &LT;     1     0     1     0     0     0     1     42     &GT;

但是dos.writeInt无法产生正常输出。相反它显示      &LT;    
                                        &GT; 空格由Squares填充

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

2 个答案:

答案 0 :(得分:1)

直接尝试PrintStreamFileOutputStream,它会产生人类可读的结果。

您可以尝试这样做(可能仍需要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");
    }
}

答案 1 :(得分:0)

  

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

你做不到。布尔和整数是原始数据类型。您可以 将它们作为二进制DataOutputStream一起写入二进制文件,将它们写为StringsWriter的文本文件和writer.write(""+bool)等结构。