Я работаю над плагином, который требует значительного количества хранимых данных. У меня он хранится в пользовательском файле конфигурации, который я нашел в Интернете, который работает в основном так же, как и по умолчанию.Должны ли объекты Ямлконфигурации закрываться?
Проблема, с которой я сталкиваюсь, заключается в том, что я не уверен, как фактически закрыть файл, или мне даже нужно, поскольку я мало знаю о конфигурациях yaml. Код для шаблона, который я использовал ниже.
Мне также интересно узнать, как я должен хранить большие объемы данных в будущем.
public class CustomConfig {
//store name of file to load/edit
private final String fileName;
//store plugin, to get file directory
private final JavaPlugin plugin;
//store actual hard disk file location
private File configFile;
//store ram file copy location
private FileConfiguration fileConfiguration;
//constructor taking a plugin and filename
public CustomConfig(JavaPlugin plugin, String fileName) {
//ensure plugin exists to get folder path
if (plugin == null)
throw new IllegalArgumentException("plugin cannot be null");
//set this classes plugin variable to the one passed to this method
this.plugin = plugin;
//get name of file to load/edit
this.fileName = fileName;
//get directory/folder of file to load/edit
File dataFolder = plugin.getDataFolder();
if (dataFolder == null)
throw new IllegalStateException();
//load config file from hard disk
this.configFile = new File(plugin.getDataFolder(), fileName);
reloadConfig();
}
public void reloadConfig() {
//load memory file from the hard copy
fileConfiguration = YamlConfiguration.loadConfiguration(configFile);
// Look for defaults in the jar
File configFile = new File(plugin.getDataFolder(), fileName);
if (configFile != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(configFile);
fileConfiguration.setDefaults(defConfig);
}
}
public FileConfiguration getConfig() {
if (fileConfiguration == null) {
this.reloadConfig();
}
return fileConfiguration;
}
public void saveConfig() {
if (fileConfiguration == null || configFile == null) {
return;
} else {
try {
getConfig().save(configFile);
} catch (IOException ex) {
plugin.getLogger().log(Level.SEVERE, "Could not save config to " + configFile, ex);
}
}
}
public void saveDefaultConfig() {
if (!configFile.exists()) {
this.plugin.saveResource(fileName, false);
}
}
}
Не могли бы вы быть более конкретными в отношении той части кода, с которой вам хотелось бы помочь? Хотя я чувствую, что некоторые из этого кода могут быть сокращены, я не вижу очевидных ошибок, и у вас нет метода, который записывает в файл. Я считаю, что единственное, что вам нужно сделать после редактирования файла YAML, это сохранить его, не требуя закрытия. Для больших объемов данных вы можете искать базы данных (SQLite, MySQL и т. Д.) –
Я полагаю, что это все, что мне нужно было знать, я никогда не использовал yaml и был смущен отсутствием возможности закрыть его. Автоматически ли он удаляется из бара после его сохранения? – donsavage
Если вам нужно хранить много данных, вы должны изучить [MySQL] (https://www.mysql.com/) – Jojodmo