【问题标题】:Looping through multiple YAML files to find specific data循环遍历多个 YAML 文件以查找特定数据
【发布时间】:2015-09-07 00:50:00
【问题描述】:

我想问一下,如何通过 YAML 文件循环查找所需的数据?

我的情况:我有一个 Spigot/Bukkit 服务器,它有一个文件夹,里面有很多文件。我需要做的是在插件中分别浏览这些文件中的每一个,以查找哪个文件包含我需要的数据。我怎样才能做到这一点?

【问题讨论】:

  • 您要查找哪些数据?如果你给我们一个例子,我们可能会提供帮助。
  • @ScottMcGready 只是 YAML 中的一个字符串值。但我需要知道如何遍历大量 YAML 文件。
  • 带有循环,例如 for 循环或 while 循环
  • @Aequitas 什么都能完成工作
  • 你能详细说明一下吗,你能告诉我们你的尝试吗?您没有提供足够的信息,如果您只是询问如何循环文件,那只是for(File file : fileCollection){readFile(file);}

标签: java file yaml bukkit


【解决方案1】:

您可以使用以下方式循环文件:

YamlConfiguration config = new YamlConfiguration();
File[] files = this.getDataFolder().listFiles();
for(File file : files){
    try {
        config.load(file);
        if(config.contains("Path")){
            //What you need to do.
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InvalidConfigurationException e) {
        e.printStackTrace();
    }
}

加载它们,然后循环加载它们,然后检查它们是否包含您需要的路径。但是,您可能需要指定一个文件夹,为此只需在 for 循环中执行如下语句:

file = new File(file.getAbsolutePath() + File.separator + "FOLDER_NAME");

但实际上最后一部分是如果您有其他类型的文件。如果您不小心,您最终可能会遇到异常。通常,您所做的通常不是必需的,并且很可能有更好的解决方案。只是回答你的问题。

【讨论】:

  • 谢谢!我意识到可能有更好的解决方案,但我在截止日期前需要这个,所以我可能会在未来升级它。
  • 没问题!我知道这对我们插件开发人员来说是怎样的...... :P 虽然稍后升级它,但当升级的时候,我认为这可能是人们将他们的文件名添加到 config.yml 的方式。当然,如果这符合您的服务器雇主的需求!如果没有,那么这可能是我所知道的最好的方法。通常我只会有人们可以更改的配置,而不是人们可以制作的配置。不过很有趣(另外,请记住接受您认为最好的任何答案!)最后,请注意,如果多个包含必要的路径,它将为每个文件执行...
  • 是的,我会检查数据以确保它是我想要编辑的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
  • 2019-01-03
  • 2018-01-15
  • 1970-01-01
相关资源
最近更新 更多