J'ai cette méthode qui obtient la dernière ligne d'un fichier .txt et crée un nouveau fichier temporaire sans cette ligne. Mais quand j'essaye de supprimer le .txt qui a la ligne que je veux supprimer (ainsi je peux renommer le dossier de temp) pour une raison que je ne peux pas. Voici le code:Impossible de supprimer le fichier 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);
}
}
Ce qui est drôle est que lorsque j'appuie sur le bouton qui appelle la méthode une fois, rien ne se passe (« Impossible de supprimer le fichier »), la deuxième fois, il fonctionne très bien et le 3e que je reçois " Impossible de renommer le fichier ".
Familiarisez-vous avec le bloc 'finally'. Cela vous aidera à fermer les fichiers correctement et de manière claire. – Jagger