DataOutputStream只写一个字符串Java

时间:2018-06-04 08:24:23

标签: java output outputstream

DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("myfile.txt"));
dataOut.writeUTF("HEY");   // write HEY
dataOut.writeShort(1);     // writes nothing

我正在尝试使用DataOutputStream在我的文本文件中写一些东西。但是,它只写一个字符串,而不是整数或短。我不明白为什么它只写字符串。请帮忙。

2 个答案:

答案 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