Удалить и переименовать файл, имеющий проблемы

1

Я получил 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);

}
  • 0
    не исключение, он просто создает out.dat с новым паролем
  • 0
    да, удалить файл и переименовать файл не работает
Теги:

2 ответа

2
Лучший ответ

Я бы рекомендовал вместо этого использовать новый 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.

  • 1
    хорошо, позволь мне пойти и попробовать, спасибо
  • 0
    извините, я получил сообщение об ошибке: метод Delete (путь) в файлах типов не применим для аргументов (строка)
Показать ещё 7 комментариев
0

Вам нужно закрыть Scanner, вызвав "read.close()", иначе файл все еще открыт, и вы не можете его переименовать или удалить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню