2014-08-27 16 views
0

我在從文件中檢索數據時遇到了一些困難。首先,這是我創建文件的主要方法,當玩家登錄到服務器時將會觸發(稍後)。這裏看到的,用他們的名字作爲文件名 -檢索播放器的正確文件和數據

// 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框架。

+0

請顯示空指針出現在哪一行。但通常情況下,一旦發生這種情況,我們無法做更多代碼,因此任何回答的人都會看到該行中的任何對象可能爲空。 – 2014-08-28 03:05:18

+0

在堆棧跟蹤中發佈__full__精確堆棧跟蹤和相關代碼。 – Unihedron 2014-08-28 07:15:54

回答

1

你的方法:

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

    return null; 
} 

,則返回null if (SettingsManager.get().getConfig().get(player.getName()) != null)等於空。所以,該文件可能不會被創建,或者您嘗試獲取不存在的文件。我可以看到.getConfig()方法嗎?

相關問題