Запись файла в текст с помощью BufferedWriter(пишет что-то странное)Java

Я пытаюсь записать несколько целых чисел в текстовый файл с вводом только одного значения в каждой строке, поэтому я использовал BufferedWriter.

try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
                          new FileOutputStream("filename.txt"), "utf-8"))) {
    writer.write(board.Player1.money);             
    writer.newLine();
    //Continues to do this for 4 players.
    writer.newLine();
    writer.write(board.Player1.position);
    writer.newLine();
    //Continues to do this for 4 players.
}

То, что я ожидал увидеть, было целыми числами в моем текстовом файле. И такие ценности, как board.Player1.money являются правильными, потому что они работают для других частей кода. Таким образом, я ожидаю увидеть значение как 300, но я вижу следующие строки в текстовом файле.

Ǵ
ಀ
ಀ
ಀ

Это почему?

3 ответа

Решение

write(...) метод BufferedWriter перегружен

Например: есть метод void write(String arg) который записывает данную строку в файл и есть void write(int arg) который преобразует данное целое число в символ, а затем записывает символ в файл.

Чтобы решить вашу проблему, вам придется изменить

writer.write(board.Player1.position);

в

writer.write(Integer.toString(board.Player1.position));

Еще один способ сделать это:

writer.write(board.Player1.money+"");   

write(int c) с целым числом ожидает символ. Попробуйте использовать write(String s, int off, int len) или какую-нибудь оболочку, например PrintWriter.

Другие вопросы по тегам