簡體   English   中英

如何使DataOutputStream將布爾或整數寫入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。

直接嘗試使用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");
    }
}

如何使DataOutputStream將布爾或整數寫入txt文件?

你不能 布爾值和整數是原始數據類型。 可以把它們寫為二進制 DataOutputStream 二進制文件, 將它們寫成Strings文本文件與Writer和結構,如writer.write(""+bool)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM