我目前正在开发一个JavaFX应用程序,它使用保存文件来加载有关上一个会话的信息。我在关闭BufferedReader和BufferedWriters时遇到问题。在JavaFX应用程序终止之前,文件不会被解锁。我已经跟踪了代码,并确保没有BufferedReaders和BufferedWriters没有关闭。如果我在JavaFX关闭后尝试修改文件,它们将被重命名并正确删除。以下是我读取和写入文件的方法之一。
这是学校作业,不允许使用外部图书馆。
public static boolean addNewAccount(User user, String fileName)
{
try
{
File output = new File("temp.csv");
File input = new File(fileName);
if (output.exists())
{
output.delete();
output.createNewFile();
}
BufferedWriter outputStream = new BufferedWriter(new FileWriter(output.getName()));
BufferedReader inputStream = new BufferedReader(new FileReader(input.getName()));
...
Read and write stuff here.
...
inputStream.close();
inputStream = null;
outputStream.close();
outputStream = null;
System.gc();
input.delete();
if (!output.renameTo(input))
{
HistoryLog.getInstance().log("Something is preventing a file from being closed.");
return false;
}
}
catch (IOException e)
{
e.printStackTrace();
return false;
}
return true;
}