Я делаю функцию сохранения / загрузки настроек в моем приложении. После запуска программы она пытается найти файл. Если это не удается, он пытается создать файл с настройками по умолчанию (код ниже)
try (FileWriter fileWriter = new FileWriter(absolutePath))
{
fileWriter.write("theme=light\n");
fileWriter.write("resolution=1280x720\n");
fileWriter.write("printfps=false\n");
System.out.println("Reset settings");
load();
}
catch (FileNotFoundException e)
{
System.out.println("Settings File not found.");
}
catch (IOException e)
{
e.printStackTrace();
}
После того, как он это записал, он продолжает загружать файл. (вызов метода load ())
В методе загрузки приложение считывает содержимое файла (код ниже).
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(absolutePath)))
{
String line = bufferedReader.readLine();
System.out.println(line);
while(line != null)
{
if (line.contains("="))
{
String key = line;
String value = line;
while (key.contains("="))
{
key = key.substring(0, key.length() - 1);
}
while (value.contains("="))
{
value = value.substring(1);
}
settings.put(key, value);
}
System.out.println(line);
line = bufferedReader.readLine();
}
System.out.println(settings);
}
Однако возвращается, что файл пуст. После работы с точками останова, я могу подтвердить, что файл действительно не обновляется в этот момент. Довольно странная вещь заключается в том, что, если я приостанавливаю приложение позднее, файл, кажется, содержит текст, который был записан в него, даже если файл не затрагивается позже в программе.
Это заставляет меня Полагайте, что для обновления файла требуется некоторое время, что не приводит к своевременному обновлению метода load (). Это правильно, или я что-то упустил? И есть ли обходной путь?
Вся помощь приветствуется:)