Java-Can';t使用file.delete()删除文件
因此,我使用下面的代码基本上从一个文件中删除一行,方法是用除这一行以外的所有内容编写一个临时文件,然后删除旧文件并将新文件名设置为旧文件名 唯一的问题是无论我做什么,Java-Can';t使用file.delete()删除文件,java,file,csv,writer,reader,Java,File,Csv,Writer,Reader,因此,我使用下面的代码基本上从一个文件中删除一行,方法是用除这一行以外的所有内容编写一个临时文件,然后删除旧文件并将新文件名设置为旧文件名 唯一的问题是无论我做什么,delete()方法和renameTo()方法都返回false 我在这里看了大约20个不同的问题,他们的解决方案似乎都没有帮助。以下是我正在使用的方法: public void deleteAccount(String filePath, String removeID) { String tempFile = "temp
delete()
方法和renameTo()
方法都返回false
我在这里看了大约20个不同的问题,他们的解决方案似乎都没有帮助。以下是我正在使用的方法:
public void deleteAccount(String filePath, String removeID)
{
String tempFile = "temp.csv";
File oldFile = new File(filePath);
File newFile = new File(tempFile);
String firstname = "";
String lastname = "";
String id = "";
String phonenum = "";
String username = "";
String password = "";
String accounttype = "";
try
{
FileWriter fw = new FileWriter(newFile, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
Scanner reader = new Scanner(new File(filePath));
reader.useDelimiter("[,\n]");
while (reader.hasNext())
{
firstname = reader.next();
lastname = reader.next();
id = reader.next();
phonenum = reader.next();
username = reader.next();
password = reader.next();
accounttype = reader.next();
if (!id.equals(removeID))
{
pw.println(firstname + "," + lastname + "," + id + "," + phonenum + "," + username + "," + password
+ "," + accounttype + ",");
}
}
reader.close();
pw.flush();
pw.close();
oldFile.delete();
System.out.println(oldFile.delete());
File dump = new File(filePath);
newFile.renameTo(dump);
System.out.println(newFile.renameTo(dump));
} catch (Exception e)
{
}
}
解析到文件路径
字符串中的字符串是“login.csv”
,它在前面的方法中被读取,但读卡器肯定会被关闭
编辑:这是login.csv的外观
John,Doe,A1,0123456789,johnd,password1,Admin
Jane,Doe,A2,1234567890,janed,password2,CourseCoordinator
John,Smith,A3,2345678901,johns,password3,Approver
Jane,Smith,A4,356789012,johns,password4,CasualStaff
Josh,Males,A5,0434137872,joshm,password5,Admin
您将调用
delete()
方法两次-一次不使用返回值(oldFile.delete()
),第二次打印返回值(System.out.println(oldFile.delete())
)
第二次调用将始终返回false
——这可能是因为两次删除尝试都会因相同的原因失败,也可能是因为第一次删除尝试会成功(因此第二次将失败,因为文件已不存在)
您要查找的语法如下所示:
boolean deletionResult = oldFile.delete();
System.out.println("Deletion result is " + deletionResult);
您将调用
delete()
方法两次-一次不使用返回值(oldFile.delete()
),第二次打印返回值(System.out.println(oldFile.delete())
)
第二次调用将始终返回false
——这可能是因为两次删除尝试都会因相同的原因失败,也可能是因为第一次删除尝试会成功(因此第二次将失败,因为文件已不存在)
您要查找的语法如下所示:
boolean deletionResult = oldFile.delete();
System.out.println("Deletion result is " + deletionResult);
您能从login.csv添加几行吗?如果您使用语法,确保所有内容都已正确关闭,并且将删除/重命名代码放在try-catch块下面,我认为不会出现问题。在login.csv文件中添加了所有内容。另外,我将尝试Dreamspace尝试删除一个不相关的文件,看看它是否有效?尝试删除该文件,它说它正在被另一个程序使用,但它唯一可以被Eclipse使用的是它自己。您可以从login.csv添加几行吗?我想如果您使用语法,问题不会发生,这将确保所有内容都已正确关闭,并且您是否将删除/重命名代码放在try catch块的外部。已在login.csv文件中添加所有内容。另外,我将尝试Dreamspace尝试删除一个不相关的文件,看看它是否有效?尝试删除该文件,它说它正在被另一个程序使用,但它唯一可以被Eclipse使用的是它自己仍然变为false:/确保该文件没有在其他任何地方打开,例如,在文本编辑器中。仍然变假:/确保文件未在其他任何位置打开,例如在文本编辑器中。