在爲我的課程創建方法時,我遇到了意想不到的問題。我嘗試過其他方面的解決方案,但他們不適合我。我的方法應該只是找到指定的行,複製文件跳過不必要的行,刪除原始文件,並將臨時文件重命名爲原始文件的名稱。它會按預期成功創建新文件,但因爲無法將臨時文件重命名爲原始文件而無法刪除前一個文件。我無法弄清楚,爲什麼?爲什麼我既不能刪除也不能重命名文件?
void lineDelete(String file_name, String line_to_erase){
try {
int line_number = 0;
String newline = System.getProperty("line.separator");
File temp = new File("temporary.txt");
File theFile = new File(file_name+".txt");
String path = theFile.getCanonicalPath();
File filePath = new File(path);
BufferedReader reader = new BufferedReader(new FileReader(file_name + ".txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter(temp));
String lineToRemove = line_to_erase;
String currentLine;
while((currentLine = reader.readLine()) != null) {
String trimmedLine = currentLine.trim();
if(trimmedLine.equals(lineToRemove)){
continue;
}
writer.write(currentLine + newline));
}
writer.close();
reader.close();
filePath.delete();
temp.renameTo(theFile);
}
catch (FileNotFoundException e){
System.out.println(e);
}
catch (IOException e){
System.out.println(e);
}
你有什麼異常嗎? – TDG
發佈的代碼甚至沒有編譯。 tempFile未定義。發佈實際的代碼,確實存在問題。使用Files.delete和Files.move:你會得到解決問題的解決辦法。 –
不,我沒有得到任何異常,並且對tempFile感到抱歉,忘記將它改爲temp。我編輯了原始代碼,以便變量更清晰。 –