删除java中的文本文件
我有一种方法可以删除文本文件中包含选定电话号码的行。下面是我的代码删除java中的文本文件,java,Java,我有一种方法可以删除文本文件中包含选定电话号码的行。下面是我的代码 private void DeleteButtonActionPerformed(java.awt.event.ActionEvent evt) { try { String selectedphone = Phone.getText(); BufferedReader br = new Buff
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”文件如下
0787465147|John|Doe|924578654v|Colombo|
0715435786|Jane|Doe|6672475845v|Colombo|
0114745755|Foo|Baz|6454753754v|Kandy|
当我点击'delete'按钮,并将'selectedphone'设置为0787465147时,它将创建一个'tempphonebook.txt'文件,如下所示
0715435786|Jane|Doe|6672475845v|Colombo|
0114745755|Foo|Baz|6454753754v|Kandy|
然后应删除“phonebook.txt”,并将“temphonebook.txt”重命名为“phonebook.txt”。问题是我无法删除“phonebook.txt”文件。当我点击“删除”按钮时,我得到了这个按摩
Could not delete file
Update failed
有人能帮我吗?提前感谢!:) 您尝试删除文件两次:
file.delete();
if (!file.delete()) {
删除第一个
文件。删除()代码>您的代码尝试删除该文件两次。因此,如果文件在第一次尝试时被删除,您的第二次调用将无效。您需要删除第一个
//file.delete(); //not required
if (!file.delete()) {
使用try with资源。这在大多数情况下都有效
是,删除用于删除和重命名文件的额外代码
您只需要使用fileName.delete()或fileName.renameTo(“name”);
一旦如果命令成功,它将返回true
当您再次使用该命令时,它将尝试删除不存在的文件(您已经删除了该文件)
参见此示例
它处理类似的问题。您确定没有删除该文件吗?您的代码实际上尝试了两次删除该文件;因此,第二次尝试肯定会失败,要么是因为文件第一次被删除,要么是因为有什么东西阻止了它被删除。您需要删除对file.delete()
的一个调用。我检查了文件夹,文件仍然在那里。还删除了第一个“file.delete()”。仍然在做同样的按摩。我开始觉得有什么东西阻止了文件被删除。你在Windows中运行这个吗?根据我的经验,Windows有时会在关闭正在读取的读取器后将文件锁定几毫秒;因此,您将无法在br.close()
之后立即删除它。也许您可以在删除之前插入20毫秒左右的睡眠时间。您从file.canWrite()
中得到了什么?是的,我使用的是Windows 7。我是java新手。您能解释一下我是如何做到这一点的吗?@TharinduKuruppu:-检查该文件是否未打开,以及您是否有删除该文件的权限。@TharinduKuruppu:-还检查是否有其他进程正在访问该文件?看起来某个进程或任务正在阻止删除该文件。否,在我运行该程序时,两个文件都已关闭。我可以手动删除这些文件,但我不确定如何检查我是否有权通过该程序删除该文件。@TharinduKuruppu:-您是否使用管理访问权限运行该程序?当然。我刚刚尝试用IOrbit unlocker解锁文件“honebook.txt”。在我执行程序之前,它没有被锁定。但当程序运行时,文件被锁定。所以我在点击删除按钮之前解锁了它,结果成功了。现在的问题是,在我关闭该文件后,如何锁定它,以及如何修复此问题?