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 и иметь возможность читать/редактировать текст на английском языке. Любая помощь?
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();
FileOutputStream
и DataOutputStream
и замените их на PrintWriter
.
Пусть объект игрока реализует Serilizable, и пока все его свойства, такие как строки и целые числа, также могут быть сериализованы, будет выполнена сериализация.
Обратитесь к руководству по сериализации:
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.