DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("myfile.txt"));
dataOut.writeUTF("HEY"); // write HEY
dataOut.writeShort(1); // writes nothing
我正在尝试使用DataOutputStream在我的文本文件中写一些东西。但是,它只写一个字符串,而不是整数或短。我不明白为什么它只写字符串。请帮忙。
答案 0 :(得分:2)
注意:尽管调用文件myfile.txt
,但这是二进制文件而不是文本格式,因此您无法将其作为文本读取,例如使用文本编辑器查看短值。
如果您关闭文件并以与写入文件相同的方式阅读文件,则此方法可以正常工作。
try (DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("myfile.txt"))) {
dataOut.writeUTF("HEY"); // write HEY
dataOut.writeShort(1);
}
try (DataInputStream dataIn = new DataInputStream(new FileInputStream("myfile.txt"))) {
System.out.println("string: " + dataIn.readUTF());
System.out.println("short: " + dataIn.readShort());
}
打印
string: HEY
short: 1
您很可能希望该文件为文本。
try (PrintWriter dataOut = new PrintWriter(new FileOutputStream("myfile.txt"))) {
dataOut.println("HEY"); // write HEY
dataOut.println(1);
}
try (Scanner dataIn = new Scanner(new FileInputStream("myfile.txt"))) {
System.out.println("string: " + dataIn.nextLine());
System.out.println("short: " + dataIn.nextShort());
}
打印
string: HEY
short: 1
,文件包含
HEY
1
答案 1 :(得分:1)
您没有为您的断言提供任何证据。 writeUTF()
和writeInt()
都不会生成文字。它们都产生二进制数据。您不应该尝试将此数据保存在扩展名为.txt的文件中(您不应尝试使用文本编辑器读取它)。您可以阅读此数据的唯一方法是使用DataInputStream
。