有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用java将数据写入文件

我正在用java编写一个服务器,它允许客户端玩一个类似于20个问题的游戏。游戏本身基本上是一棵二叉树,节点是关于一个对象的问题,叶子是对对象身份的猜测。当游戏猜错时,它需要能够从玩家那里得到正确的答案,并将其添加到树中。然后将这些数据保存到随机访问文件中

问题是:如何在文件中表示一棵树,以便以后可以将数据作为一棵树重新访问

如果您知道我在哪里可以找到有关在写入/读取文件时保持树等数据结构的信息,请将其链接。非常感谢


谢谢大家的快速回答。这是一个学校项目,所以它有一些奇怪的要求,比如使用随机访问文件和telnet


共 (2) 个答案

  1. # 1 楼答案

    This data is then saved to a random access file.

    这是解决你的问题的困难方法(我是说“随机访问”这一点)

    您真正想要解决的问题是如何持久化“复杂”的数据结构。事实上,有很多方法可以做到这一点。这里有一些

    • 使用Java持久性。这很容易实现;确保数据结构是可序列化的,然后只需序列化几行代码,再反序列化几行代码。缺点是:

      • 面对代码更改,序列化对象可能很脆弱
      • 序列化不是增量的。你每次都要写/读整个图表
      • 如果有多个单独的序列化图,则需要一些方案来命名和管理它们
    • 使用XML。与Java持久化相比,这需要更多的工作来实现,但它的优点是不那么脆弱。如果确实出了问题,您可以使用XSLT或文本编辑器来修复它。(有一些XML“绑定”库消除了许多胶水编码。)

    • 使用SQL数据库。这解决了Java持久性的所有缺点,但涉及到更多的编码。。。并使用不同的计算模型访问持久数据(查询与图形导航)

    • 使用数据库和对象关系映射技术;e、 g.JPA或JDO实现。(Hibernate是一个流行的选择)。它们以或多或少透明的方式在数据库和内存中的数据视图之间架起了桥梁,避免了在SQL数据库和XML案例中编写大量粘合代码

  2. # 2 楼答案

    Java序列化有一些缺陷(比如更新类时)。我会以文本格式序列化。Json是我的首选,但xml和yaml也可以

    这样,您就可以拥有一个不依赖于类的二进制版本的文件

    有几个java库:http://www.json.org

    例如:

    http://code.google.com/p/json-simple/wiki/DecodingExamples

    http://code.google.com/p/json-simple/wiki/EncodingExamples

    要保存和读取文件,可以使用Commons Io

    import org.apache.commons.io.FileUtis;
    import java.io.File;
    ...
    File dataFile = new File("yourfile.json");
    String data = FileUtils.readFileToString(dataFile);
    
    FileUtils.writeStringToFile(dataFile, content);