DataOutputStream записывает только строку Java - PullRequest
0 голосов
/ 04 июня 2018
DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("myfile.txt"));
dataOut.writeUTF("HEY");   // write HEY
dataOut.writeShort(1);     // writes nothing

Я пытаюсь использовать DataOutputStream для записи чего-либо в мой текстовый файл.Тем не менее, он записывает только строку, а не целое или короткое.Я не понимаю, почему он пишет только строки.Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

ПРИМЕЧАНИЕ. Несмотря на вызов файла 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
0 голосов
/ 04 июня 2018

Вы не представили доказательств своего утверждения.Ни writeUTF(), ни writeInt() не производит текст.Они оба производят двоичные данные.Вы не должны пытаться сохранить эти данные в файле с расширением .txt (и вы не должны пытаться читать их в текстовом редакторе).Единственный способ прочитать эти данные - DataInputStream.

...