Как почистить текстовый файл в цикле? - PullRequest
0 голосов
/ 28 сентября 2018

Идея такова: пользователь вводит пароль и данные для входа, программа записывает их в файл.Когда вы снова «зарегистрируетесь», данные из файла будут удалены.Я попытался сделать это с помощью пустой строки, но, поскольку я не могу закрыть файл, чтобы сохранить его, новые данные записываются поверх старых.Я не могу сделать это, потому что есть ошибка «Поток закрыт».Я закрыл первый Writer в случае 2. Посмотрите на случай 1. Есть код:

public class FL {
    public static void main(String[] args) throws IOException {
        String login, pass, name="User", admin="Administrator"; int a=0, k=0;
        File LP = new File("LogPass.txt");
        if (!LP.exists()) LP.createNewFile();

        FileReader fr = new FileReader(LP);
        FileWriter fw = new FileWriter(LP, true);
        FileWriter reopen = new FileWriter(LP, false);

        BufferedWriter reop = new BufferedWriter(reopen);
        BufferedReader br = new BufferedReader(fr);
        BufferedWriter bw = new BufferedWriter(fw);

        Scanner sc = new Scanner(System.in);
        System.out.printf("Welcome!\n");
        do {
            System.out.println("Press 1 to Log In;\nPress 2 to Sign In;\nPress 3 to exit system.");
        a = sc.nextInt();

        switch (a) {
            case 1:

                reop.write("");//new login+password     <<===== Here
                reop.flush();
                //reop.close();

            System.out.println("Enter your Login: ");
            sc.nextLine();
            login = sc.nextLine();
            bw.write(login);

            System.out.println("Enter your Password: ");
            pass = sc.nextLine();
            bw.newLine();
            bw.write(pass);
            bw.flush();
             break;

            case 2:
                bw.close();
            System.out.println("Login: ");
            sc.nextLine();
            login = sc.nextLine();
            if (login.equals(admin)) {
                System.out.println("Login = "+br.readLine()+"\nPassword = "+br.readLine()); break;
            }
            System.out.println("Password: ");
            pass = sc.nextLine();
            name=login;
            if (login.equals(br.readLine()) && pass.equals(br.readLine()))
                System.out.println("You are in, "+name+"!"); else {
                    System.out.println("Invalid login or password..."); k++;
            } if (k==3) {
                System.out.println("You made the mistake three times in a roll - finishing work..."); System.exit(0);
            }
                break;
            default: System.exit(0); break;
        }
        } while (a!=3);
    }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...