File file = new File(directory + player.getUsername() + ".dat");
        if (!file.exists()) {
            file.createNewFile();
        }

        FileOutputStream outFile = new FileOutputStream(file);
        DataOutputStream write = new DataOutputStream(outFile);
        write.writeUTF(player.getUsername());
        write.writeUTF(player.getPassword());
        write.writeInt(player.getStaffRights());
        write.writeInt(player.getPosition().getX());
        write.writeInt(player.getPosition().getY());
        write.writeInt(player.getPosition().getZ());
        write.writeInt(player.getGender());

Итак, в значительной степени этот код делает новые файлы персонажей для этой игры, с которой я работаю. Но проблема заключается в том, что информацию о символах, которую этот код помещает в .dat, я не могу прочитать, когда пытаюсь открыть, скажем, в блокноте, это просто тарабарщина. Мне нужно иметь возможность открывать эти .dats и иметь возможность читать/редактировать текст на английском языке. Любая помощь?

-1
Matt Mullenbach 21 Фев 2015 в 01:58
1
Храните данные в виде строк, а не в двоичном виде.
 – 
xehpuk
21 Фев 2015 в 02:00
Zubergu как мне это сделать?
 – 
Matt Mullenbach
21 Фев 2015 в 02:02
Как вы в настоящее время сохраняете данные как двоичные? Как вы могли изменить это на текст?
 – 
beresfordt
21 Фев 2015 в 02:19

2 ответа

Когда вы сохраняете данные с помощью DataOutputStream, они будут сохранены в собственном двоичном формате сериализации Java, а не в виде простого текста, который вы можете прочитать, например, с помощью Блокнота.

Если вы хотите записать в файл обычный текст, используйте один из подклассов java.io.Writer для записи в файл вместо DataOutputStream, например PrintWriter.

PrintWriter out = new PrintWriter(file);
out.println(player.getUsername());
// etc...

// Also, don't forget to close when you are done
out.close();
0
Jesper 21 Фев 2015 в 02:07
Смогу ли я изменить его на PrintWriter из DataOutputStream, и тогда все будущие файлы символов будут сохранены как текст в .dat?
 – 
Matt Mullenbach
21 Фев 2015 в 02:16
Да, попробуйте сами и посмотрите, что получится.
 – 
Jesper
21 Фев 2015 в 02:17
Итак, я использую PrintWriter для записи данных в файл, и как мне это сделать? PrintWriter.println(player.getUsername()); ?
 – 
Matt Mullenbach
21 Фев 2015 в 02:37
Вы смотрели мой ответ выше? Там точно показано, как это сделать. Удалите две строки с FileOutputStream и DataOutputStream и замените их на PrintWriter.
 – 
Jesper
21 Фев 2015 в 12:22

Пусть объект игрока реализует Serilizable, и пока все его свойства, такие как строки и целые числа, также могут быть сериализованы, будет выполнена сериализация.

Обратитесь к руководству по сериализации:

Руководство

-1
Gregory Basior 21 Фев 2015 в 02:07
Это не сделает файл доступным для чтения в текстовом редакторе, о чем просил пользователь.
 – 
Jesper
21 Фев 2015 в 02:09