删除文本行和重写文件

问题描述:

这是我的代码。除了最后两行外,一切都可以使用。我试图从.txt中删除一行并将该文件重写为临时文件,然后将tempfile重命名为原始文件。尽管最后两行被忽略。这里是什么错误是:删除文本行和重写文件

https://i.gyazo.com/66a320aeaf487837ce64fe3424074de6.png

这两条线被忽略了:

inputFile.delete();

tempFile.renameTo(inputFile);

File inputFile = new File(a.getDirectoryData() + "UserTwo.txt"); 
File tempFile = new File(a.getDirectoryData() + "TempUserTwo.txt"); 

BufferedReader reader = new BufferedReader(new FileReader(inputFile)); 
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); 
String currentLine; 

while((currentLine = reader.readLine()) != null) { 
    String trimmedLine = currentLine.trim(); 
    if(trimmedLine.equals(a.username + ":" + a.password)) continue; 
    writer.write(currentLine + "\r\n"); 

} 
reader.close(); 
writer.close(); 
inputFile.delete(); 
tempFile.renameTo(inputFile); 
+1

可能重复[使用Java重命名文件](https://stackoverflow.com/questions/1158777/rename-a-file-using-java) – nagendra547

+0

这不是一个真正的错误。这是一个代码检查,它说函数.delete()和.renameTo()返回一个表示成功或失败的值。你忽略了那个返回值。如果由于共享冲突导致.delete()失败,或者如果.renameTo()因尝试重命名为现有文件而失败,该怎么办?你没有检查这些。 – JJF

+0

我添加了这行代码,它仍然没有工作。 if(inputFile.exists())inputFile.delete(); } – joeybots59

看起来它不能删除文件。你可以尝试使用

Files.delete(inputFile.toPath()) 

改为?

docs

注意的是,文件类定义的删除方法抛出IOException当一个文件无法删除。这对于错误报告和诊断文件不能被删除的原因很有用。