Я получил 2 функции, которые я создал 1, чтобы изменить пароль и 1, чтобы удалить файл. поэтому я намерен сначала запустить функцию изменения пароля, а затем выполнить файл удаления. код работает правильно и создает новый пароль в новом файле. но это не работает, когда вы пытаетесь удалить файл и переименовать, вам нужна помощь
public static void replaceAdminPassword()throws IOException{
try {
Scanner read = new Scanner(System.in);
System.out.println("Enter Old Password: ");
String oldPass = read.nextLine();
String UserPHash = Utility.getHash(oldPass);
System.out.println("Enter New Password: ");
String newPass = read.nextLine();
String UserNHash = Utility.getHash(newPass);
read = new Scanner(new File("admin.dat"));
String line;
String[] details;
String input = "";
File fout = new File("out.dat");
FileOutputStream fos = new FileOutputStream(fout);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
while (read.hasNextLine()){
line = read.nextLine();
details = line.split("\\|");
if(details[0].equalsIgnoreCase(UserPHash)){
input = UserNHash;
bw.write(input);
System.out.println("Password Changed.");
}
}
bw.close();
replaceAdminFile();
}catch (FileNotFoundException ex){
System.out.println("file not found");
}
}
public static void replaceAdminFile(){
File oldFile = new File("admin.dat");
File newFile = new File("out.dat");
oldFile.delete();
newFile.renameTo(oldFile);
}
Я бы рекомендовал вместо этого использовать новый API io:
Files.delete(Paths.get("admin.dat"));
Files.move(Paths.get("out.dat"), Paths.get("admin.dat"));
Вы можете проверить документацию на перемещение и удаление.
Не забудьте импортировать java.nio.file.Files
и java.nio.file.Paths
.
Вам нужно закрыть Scanner, вызвав "read.close()", иначе файл все еще открыт, и вы не можете его переименовать или удалить.