[英]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");
}
}
如何使
DataOutputStream
將布爾或整數寫入txt文件?
你不能 布爾值和整數是原始數據類型。 您可以把它們寫為二進制 DataOutputStream
二進制文件, 或將它們寫成Strings
文本文件與Writer
和結構,如writer.write(""+bool)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.