能够用英语读取.dat,然后能够编辑该文件

时间:2015-02-20 22:58:11

标签: java

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

答案 0 :(得分:0)

使用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();

答案 1 :(得分:-1)

让玩家对象实现Serilizable,并且只要其所有属性都可以串联,例如字符串和整数,序列化就会完成。

请参阅序列化教程:

Tutorial