将游戏数据本地保存到文件夹(啥文件?) - Java

Posted

技术标签:

【中文标题】将游戏数据本地保存到文件夹(啥文件?) - Java【英文标题】:Save Game Data Locally to Folder (What file?) - Java将游戏数据本地保存到文件夹(什么文件?) - Java 【发布时间】:2016-01-09 03:58:59 【问题描述】:

我一直在寻找这个问题的答案,但我找不到任何我想要的东西,所以我决定在这里问!

我正在制作一个 Java 游戏。我正在尝试将信息本地保存给游戏用户,例如他们的应用程序支持或文档中的文件夹或其他任何内容(类似于 Minecraft)。例如,我试图保存信息,比如他们离开的地方,如果这是他们第一次玩,以及所有这些东西。我想知道如何在那个人的计算机上的某个地方创建一个文件夹,然后在其中保存一个文件。 PC 和 Mac 用户有区别吗?我该怎么做呢?如何将文件保存在用户的计算机上?

另外,什么是读取/写入保存游戏数据的好文件?我以前使用过 YAML(我是一名 Minecraft Bukkit 开发人员),但我了解 XML(虽然我以前没有使用过它)。所以我只是想知道,除了上面关于保存的问题之外,要使用什么文件以及如何用于 Java。

请帮忙。

【问题讨论】:

【参考方案1】:

如何使用 Java 创建文件夹:How to create empty folder in java?

Scanner,一个可以从文件中读取 IO 的类:https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Scanner.html

至于您希望将文件保存为的格式 - 无论您喜欢哪种格式。在我看来,您正在使用数据的 key:value 结构,那么您为什么不看看 Java 的属性文件:http://www.avajava.com/tutorials/lessons/how-do-i-read-a-properties-file.html

【讨论】:

谢谢!但是我如何获得玩家的电脑呢?就像在路径名中一样,它从哪里开始?例如:文件文件 = 新文件(“/something/net/red.properties”)。 “东西”在哪里?!? iirc, "something" 与运行程序的目录相同。因此,如果您有一个包含 minecraft.jar 的文件夹,那么包含该 .jar 文件的任何文件夹都是“root”(第一个 /) 查看 user.home 系统属性【参考方案2】:

保存数据的方法非常简单。以printwriter 为例。

    File outFile = new File ("output.txt");
    FileWriter fWriter = new FileWriter (outFile);
    PrintWriter pWriter = new PrintWriter (fWriter);
    pWriter.println ("10, 10"); //x and y
    pWriter.println ("100"); //health
    pWriter.close();

您真正需要做的就是将信息保存在某种文件中以备后用,这里,我使用的是普通的 tecxt 文件。

然后您使用 Scanner 读取您保存的数据并将其分配给您的变量。

File inFile = new File ("input.txt");

Scanner sc = new Scanner (inFile);
while (sc.hasNextLine())

  String line = sc.nextLine();
  System.out.println (line); //assign variables here 

sc.close();

虽然这是一种保存数据的有效方式,但它很容易被篡改。普通玩家将能够编辑和更改他的 x、y 坐标、生命值或您在其中存储的任何内容。您可以使用密码学形式或其他方式来防止您的用户篡改他的数据保存。

【讨论】:

以上是关于将游戏数据本地保存到文件夹(啥文件?) - Java的主要内容,如果未能解决你的问题,请参考以下文章

请问一下linux,如何将服务器文件拿到本地?啥命令?

将抽象数据类型保存和加载到 json 文件并从游戏中的文件中读取 Haskell

js中如何将某地址的图片保存到本地指定文件夹中

使用 jquery 将表单数据保存到本地 json 文件中

jQuery或者js保存文件到本地

我将如何将 JSON 文件从 web 服务保存到本地 JSON 文件?