Java文件自动覆盖?

Java文件自动覆盖?,java,file,yaml,Java,File,Yaml,我试图仅在旧版本不存在时创建一个文件 这就是我所拥有的,我相信正在覆盖它: warningsFile = new File(plugin.getDataFolder(), "Warnings.yml"); warnings = YamlConfiguration.loadConfiguration(warningsFile); 这是在构造函数中,用于辅助类(非main)。无论何时重新加载服务器(这是针对服务器),它都会执行新文件并覆盖。有没有更好的办法 warningsFile = new F

我试图仅在旧版本不存在时创建一个文件

这就是我所拥有的,我相信正在覆盖它:

warningsFile = new File(plugin.getDataFolder(), "Warnings.yml");
warnings = YamlConfiguration.loadConfiguration(warningsFile);
这是在构造函数中,用于辅助类(非main)。无论何时重新加载服务器(这是针对服务器),它都会执行新文件并覆盖。有没有更好的办法

warningsFile = new File(plugin.getDataFolder(), "Warnings.yml");

if(!warningsFile.exists()) {
    try {
        warningsFile.createNewFile();
    }
    catch (Exception e) {
        Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "Couldn't create warnings.yml. Error: " + e.getMessage());
    }
}

warnings = YamlConfiguration.loadConfiguration(warningsFile);
  • 首先,我们实例化文件的一个实例。如果文件不存在, 我们试图创造它
  • 如果失败,我们会告诉控制台
  • 最后,我们 从该文件加载YAML配置
我制作的这个视频可能会有帮助:

(了解此服务器实现)

您只需拨打:

plugin.saveResource("warnings.yml", false);

这将从JAR文件中加载一个已保存的warnings.yml(您需要在其中放置一个),并且
false
指定不覆盖该文件。

我最初只有一个新文件();新文件()不会像上面那样创建文件吗?不会。正如Oracle的JavaDocs所说,
文件
类是文件和目录路径名的抽象表示。您可以实例化一个路径不存在的
文件
,它仍然可以工作。但是,如果您试图
listFiles()
,但文件夹不存在,则显然无法工作。看见