поэтому я использую следующий код, чтобы в основном удалить одну строку из файла, записав временный файл со всем, кроме этой одной строки, а затем удаляя старый файл и устанавливая имя нового файла в старое.
Единственная проблема заключается в том, что метод 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)
{
}
}
Строка, которая обрабатывается в filePath
String, является "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