删除java中的文本文件

时间:2015-06-23 06:28:06

标签: java

我有一种删除文本文件中包含所选电话号码的行的方法。下面是我的代码。

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

有人可以帮我这个吗?提前致谢! :)

3 个答案:

答案 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

它处理类似的问题。