如何让 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?
你不能。布尔值和整数是原始数据类型。您可以 或者 将它们作为 binary 和 DataOutputStream
写入 binary 文件, 或 将它们作为 Strings
写入带有 Writer
和 writer.write(""+bool)
.
等结构的文本文件
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?
你不能。布尔值和整数是原始数据类型。您可以 或者 将它们作为 binary 和 DataOutputStream
写入 binary 文件, 或 将它们作为 Strings
写入带有 Writer
和 writer.write(""+bool)
.