文件未正确保存
File isn't saved correctly
我正在为我的应用程序中的设置创建一个 save/load 功能。启动程序后,它会尝试查找文件。如果失败,它会尝试创建一个具有默认设置的文件(代码如下)
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);
}
但是,returns文件是空的。弄乱断点后,我可以确认文件确实在那个时候没有更新。相当奇怪的是,如果我稍后暂停应用程序,该文件似乎包含写入它的文本,即使该文件稍后在程序中没有被触及。
这让我相信文件更新需要一些时间,因此没有及时更新 load() 方法。这是正确的,还是我遗漏了什么?有解决办法吗?
感谢所有帮助:)
您在实际保存文件之前调用 load()
。
要保存文件,请调用 fileWriter.close()
或使用 FileWriter:
将 load()
调用移出 try-with-resource
块
try (FileWriter fileWriter = new FileWriter(absolutePath))
{
fileWriter.write("theme=light\n");
fileWriter.write("resolution=1280x720\n");
fileWriter.write("printfps=false\n");
}
catch (FileNotFoundException e)
{
System.out.println("Settings File not found.");
}
catch (IOException e)
{
e.printStackTrace();
}
// FileWriter closed now and the file contents saved
System.out.println("Reset settings");
load();
我正在为我的应用程序中的设置创建一个 save/load 功能。启动程序后,它会尝试查找文件。如果失败,它会尝试创建一个具有默认设置的文件(代码如下)
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);
}
但是,returns文件是空的。弄乱断点后,我可以确认文件确实在那个时候没有更新。相当奇怪的是,如果我稍后暂停应用程序,该文件似乎包含写入它的文本,即使该文件稍后在程序中没有被触及。
这让我相信文件更新需要一些时间,因此没有及时更新 load() 方法。这是正确的,还是我遗漏了什么?有解决办法吗?
感谢所有帮助:)
您在实际保存文件之前调用 load()
。
要保存文件,请调用 fileWriter.close()
或使用 FileWriter:
load()
调用移出 try-with-resource
块
try (FileWriter fileWriter = new FileWriter(absolutePath))
{
fileWriter.write("theme=light\n");
fileWriter.write("resolution=1280x720\n");
fileWriter.write("printfps=false\n");
}
catch (FileNotFoundException e)
{
System.out.println("Settings File not found.");
}
catch (IOException e)
{
e.printStackTrace();
}
// FileWriter closed now and the file contents saved
System.out.println("Reset settings");
load();