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。
答案 0 :(得分:1)
直接尝试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");
}
}
答案 1 :(得分:0)
如何让
DataOutputStream
将bool或整数写入txt文件?
你做不到。布尔和整数是原始数据类型。您可以 将它们作为二进制与DataOutputStream
一起写入二进制文件,或将它们写为Strings
到Writer
的文本文件和writer.write(""+bool)
等结构。