У меня есть этот метод, который получает последнюю строку .txt-файла и создает новый файл temp без этой строки. Но когда я пытаюсь удалить .txt, который имеет строку, которую я хочу удалить (поэтому я могу переименовать временный файл) по какой-то причине я не могу. Это код:Не удается удалить файл Java
void removeFromLocal() throws IOException {
String lineToRemove = getLastLine();
File inputFile = new File("nexLog.txt");
File tempFile = new File("TempnexLog.txt");
BufferedReader reader = null;
BufferedWriter writer = null;
try {
reader = new BufferedReader(new FileReader(inputFile));
writer = new BufferedWriter(new FileWriter(tempFile));
String currentLine;
int i = 0;
while ((currentLine = reader.readLine()) != null) {
i++;
String trimmedLine = currentLine.trim();
if (!trimmedLine.equals(lineToRemove)) {
if (i != 1) {
writer.newLine();
}
writer.write(currentLine);
}
}
reader.close();
reader = null;
writer.flush();
writer.close();
writer = null;
System.gc();
inputFile.setWritable(true);
if (!inputFile.delete()) {
System.out.println("Could not delete file");
return;
}
if (!tempFile.renameTo(inputFile)) {
System.out.println("Could not rename file");
}
//boolean successful = tempFile.renameTo(inputFile);
} catch (IOException ex) {
Logger.getLogger(dropLog.class.getName()).log(Level.SEVERE, null, ex);
}
}
Что забавно, что при нажатии на кнопку, которая вызывает метод один раз, ничего не происходит («Не удалось удалить файл»), во второй раз он работает отлично и 3-й, я получаю " Не удалось переименовать файл ".
Познакомьтесь с блоком 'finally'. Это поможет вам закрыть файлы в правильном и понятном виде. – Jagger