gpt4 book ai didi

java - 删除行后无法将 temp.txt 重命名为original.txt

转载 作者:行者123 更新时间:2023-12-01 13:04:12 24 4
gpt4 key购买 nike

我将以下代码放入自定义方法中。

File inputFile = new File("F:\\EmployeePunch\\EmployeePunch\\src\\employeepunch\\original.txt");   // Your file  
File tempFile = new File("F:\\EmployeePunch\\EmployeePunch\\src\\employeepunch\\temp.txt");// temp file
BufferedReader reader = null;
BufferedWriter writer = null;
try{
reader = new BufferedReader(new FileReader(inputFile));
writer = new BufferedWriter(new FileWriter(tempFile));

String firstName = chosenEmployee.getFirstName();
String lastName = chosenEmployee.getLastName();

String currentLine;

while((currentLine = reader.readLine()) != null) {

if(currentLine.contains(firstName)
&& currentLine.contains(lastName)) continue;

writer.write(currentLine);
}
}
catch (IOException e) {
e.printStackTrace();
}finally{
try {
inputFile.delete();
writer.close();
boolean successful = tempFile.renameTo(inputFile);
System.out.println(successful);
} catch (IOException ex) {
ex.printStackTrace();
}

}

问题是;每当我运行该程序时,renameTo都会失败;但它确实创建了一个 temp.txt,其中应该正确删除的行被删除。

为什么renameTo总是返回 false?

编辑 1:这些文件不会在 Windows 的其他任何地方打开。它们列在我的 IDE 的项目资源管理器中,但未被我的 IDE 打开。

最佳答案

renameTo() 的 javadoc 说:

The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists.

尝试关闭所有文件(您没有关闭reader,因此它仍然“正在使用”)并首先删除输入文件:

} finally {
try {
inputFile.delete();
reader.close();
writer.close();
inputFile.delete();
boolean successful = tempFile.renameTo(inputFile);
System.out.println(successful);
} catch (IOException ex) {
ex.printStackTrace();
}

}

关于java - 删除行后无法将 temp.txt 重命名为original.txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23353759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com