我有這種方法獲取.txt文件的最後一行,並創建一個沒有該行的新臨時文件。但是,當我嘗試刪除具有我想要刪除的行的.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);
}
}
請告訴我有趣的是,當我按下調用該方法一次按鈕,沒有任何反應(「無法刪除文件」),它工作正常,第二次和第三次,我得到「無法重命名文件「。
熟悉'finally'塊。它將幫助您以正確和清晰的方式關閉文件。 – Jagger 2012-02-29 16:50:12