Java 为播放机检索正确的文件和数据

Java 为播放机检索正确的文件和数据,java,bukkit,Java,Bukkit,我从文件中检索数据时遇到一些困难。首先,这里是我创建文件的主要方法,当播放器登录到服务器时(稍后)将触发该方法 // SettingsManager.java private File file; private FileConfiguration config; // ... public void createFile(String fileName) { file = new File(UnderCovern.getPlugin().getDataFolder(), file

我从文件中检索数据时遇到一些困难。首先,这里是我创建文件的主要方法,当播放器登录到服务器时(稍后)将触发该方法

// SettingsManager.java

private File file;
private FileConfiguration config;

// ...

public void createFile(String fileName) {
    file = new File(UnderCovern.getPlugin().getDataFolder(), fileName + ".yml");

    if ( !file.exists()) {
        try {
            file.createNewFile();
        } catch (Exception e) {
            UtilLogger.exception(e, "[SettingsManager] Could not create new file.");
        }
    }

    config = YamlConfiguration.loadConfiguration(file);
}
该文件通常是为另一个类中的每个用户创建的,其名称作为文件名,如下所示

SettingsManager.get().createFile(player.getName());
但是,我不知道如何准确地为用户检索正确的
.yml
文件,并从中检索数据。此代码块向我抛出一个
NullPointerException

public Rank getRank() {
    if (SettingsManager.get().getConfig().get(player.getName()) != null)
        return (Rank) SettingsManager.get().getConfig().get(player.getName() + ".Rank");

    return null;
}
还请注意,我使用的是Bukkit框架。

您的方法:

public Rank getRank() {
    if (SettingsManager.get().getConfig().get(player.getName()) != null)
        return (Rank) SettingsManager.get().getConfig().get(player.getName() + ".Rank");

    return null;
}

如果
如果(setingsmanager.get().getConfig().get(player.getName())!=null)
等于null,则返回null。因此,文件可能没有创建,或者您试图获取一个不存在的文件。我可以看看.getConfig()方法吗?

请显示空指针出现在哪一行。但通常情况下,一旦发生这种情况,没有更多的代码,我们就无法做很多事情,因此任何回答的人只要看到该行中的任何对象,就可以将完整的精确堆栈跟踪和堆栈跟踪中的相关代码置为空。