Я создаю игру и начал работать с классом под названием SaveManager, поэтому у меня не было никаких проблем, кроме случаев, когда дело доходит до удаления игры.
Моя проблема в том, что .delete () в большинстве случаев возвращает false, без вызова исключения.
Если я сделаю цикл (ниже), он в конце концов удалится, несмотря на то, что я на самом деле не меняю никакие переменные или ссылки, а сам игровой цикл определенно вообще не работает с файлами, поэтому он не "освобождает" Сам файл в любой момент.
public void delete(File save)
{
while (save.exists() && !save.delete())
{
i++;
}
new infoBox("Times delete called: " + i, "delete method in saveManager");
Итак, мой вопрос: если ссылка не из одного из моих классов, как мне ее найти и удалить, что позволяет мне удалить вышеуказанный цикл, который в основном захватывает игру до тех пор, пока файл не исчезнет.
Вот код, который работает с файлом, на случай, если я на самом деле что-то делаю не так (не дай Бог!) Я уверен, что это "освобождает" рассматриваемый файл сохранения ...
private void save()
{
ObjectOutputStream OOS = null;
BufferedOutputStream BOS = null;
FileOutputStream FOS = null;
try
{
File saveFile = new File(saveDirectory + hub.world.saveName + ".dat");
OOS = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(saveFile, false)));
OOS.write... (List of Objects & Strings here)
OOS.flush();
OOS.close();
game.saved = true; //Used for warning message on exit
this.setSavesList();
}
catch (Exception e)
{
new errorWindow(e, "SaveFile, I/O error");
}
finally
{
try
{
FOS.flush();
FOS.close();
BOS.flush();
BOS.close();
OOS.flush();
OOS.close();
}
catch (IOException e)
{
hub.frame.errorWindow(e, "Problem closing streams");
}
}
}