【问题标题】:Save values to file(e.g yml) in java在java中将值保存到文件(例如yml)
【发布时间】:2020-06-27 17:21:12
【问题描述】:

首先,这可能是一个愚蠢的问题,我搜索了几天但没有找到答案。因此,如果有关于我的问题的现有答案,我将不胜感激。

我不知道你们中是否有人编写过 Spigot、Paper 或 Bukkit,但是有一个名为 YamlConfiguration 的类具有以下方法:

public FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
cfg.set(path.path2, "hello");
cfg.getInt/String/...(path.path2); (which obviously returns "hello")
cfg.save(file);

生成的文件如下所示:

path:
    path2: "hello"

因此,即使您的程序已重新启动,您基本上也可以在这些文件中保存任何值并重复使用它们。 我知道已经从 Spigot/Paper 转向原生 Java,但我缺少类似 Yaml 的东西。我唯一发现的是一种配置文件,每次我尝试添加值时,整个文件都会被覆盖。

您能告诉我将值保存到文件的正确方法吗? (如果没有库就好了)

【问题讨论】:

  • 请不要将图像用于文本信息。而是将文本粘贴到问题帖子中。另请参阅How to Ask

标签: java file yaml


【解决方案1】:

我错过了类似 Yaml 的东西

SnakeYAML 应该可以满足您的需求。在不了解您的用例的情况下,在这里讨论它的用法是没有意义的,因为它的文档已经涵盖了一般主题。

我发现的唯一东西是一种配置文件,每次我尝试添加值时,整个文件都会被覆盖。

另存为 YAML 也将始终覆盖整个文件。序列化实际上不适用于仅附加。 (顺便说一下,序列化是当您想要这样的功能时要搜索的术语。)

如果您的意思是删除了之前的值,那可能是因为您之前没有加载文件的内容或其他一些编码错误,但由于您没有显示您的代码,我们只能推测。

您能告诉我将值保存到文件的正确方法吗?

人们对于什么是正确的方式会有完全不同的看法,因此在这里问这个问题不是一个好问题。它还很大程度上取决于您的用例。

如果没有库就好了

所以您基本上是在说“以前我使用了一个具有很好功能的库,但我希望在不使用库的情况下拥有该功能”。在当今日益模块化的软件世界中,这种立场不会让您走得太远。

例如,JAXB 提供从/到 XML 的(反)序列化以前是 Java SE 的一部分,但在 Java SE 11 中已被删除,现在是一个单独的库。

【讨论】:

  • 感谢您的回答,我会尽力使用 SnakeYAML,如果不起作用,我会回到这里。
猜你喜欢
  • 2014-05-11
  • 2010-12-28
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多