我有一种删除文本文件中包含所选电话号码的行的方法。下面是我的代码。
private void DeleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
String selectedphone = Phone.getText();
BufferedReader br = new BufferedReader(new FileReader(file));
// Construct the new file that will later be renamed to the original file
PrintWriter pw = new PrintWriter(new FileWriter(tempFile));
String line = null;
// Read from the original file and write to the new
// unless content matches data to be removed.
while ((line = br.readLine()) != null) {
if (line.trim().startsWith(selectedphone)) {
continue;
} else {
pw.println(line);
pw.flush();
}
}
pw.close();
br.close();
file.delete();
if (!file.delete()) {
System.out.println("Could not delete file");
}
//rename tempphonebook.txt file back to phonebook.txt
tempFile.renameTo(file);
if (tempFile.renameTo(file)) {
System.out.println("Update succesful");
} else {
System.out.println("Update failed");
}
} catch (Exception e) {
}
}
我的'phonebook.txt'文件如下
0786160384|P. K.|Tharindu|912921549v|Colombo|
0711495765|P. K.|Gamini|657414589v|Colombo|
0114756199|H. P.|Weerasigha|657895478v|Kandy|
当我点击“删除”按钮并将“所选电话”作为0786160384时,它将创建一个'tempphonebook.txt'文件,如下所示。
0711495765|P. K.|Gamini|657414589v|Colombo|
0114756199|H. P.|Weerasigha|657895478v|Kandy|
然后应删除'phonebook.txt'并将'tempphonebook.txt'重命名为'phonebook.txt'。问题是我无法删除'phonebook.txt'文件。当我点击“删除”按钮
时,我得到了这个按摩Could not delete file
Update failed
有人可以帮我这个吗?提前致谢! :)
答案 0 :(得分:0)
您尝试删除文件两次:
file.delete();
if (!file.delete()) {
删除第一个file.delete();
答案 1 :(得分:0)
您的代码正在尝试删除该文件两次。因此,如果在第一次尝试时删除该文件,则您的第二次呼叫将变为无效。您需要删除第一个
//file.delete(); //not required
if (!file.delete()) {
答案 2 :(得分:0)
使用try-with-resources。这适用于大多数情况
是的删除额外的删除代码并重命名文件。
您只需要使用fileName.delete()或fileName.renameTo(“name”); 一旦。如果命令成功,它将返回true。
再次使用该命令时,它会尝试删除不存在的文件(您已经删除了该文件)。
查看此示例 Deleting Lines on text file 强>
它处理类似的问题。