Запись в файл с помощью принтера - PullRequest
0 голосов
/ 01 мая 2018

Привет, я новичок в файле ввода / вывода, и у меня небольшая проблема с записью в файл. Моя программа должна записать имя пользователя и пароль в файл. Вот мой код (я опишу мою проблему после кода, потому что он специфичен для программы):

public class Helper {

    public static void main(String[] args) throws Exception {

        Home();
        UserInput();
    }

    private static void Home() throws FileNotFoundException{
        System.out.println("Here are the instrucions for the chat program:");
        System.out.println("Type *R for registration" );
    }

    private static void UserInput() throws Exception{
        Scanner scan = new Scanner(System.in);
        String input = scan.next();

        if(input.equals("*R")){
            Register(); 
        }
        main(new String[0]);
    }

    private static void Register() throws FileNotFoundException{
        try{
            File info = new File("info.txt");
            info.createNewFile();
            FileOutputStream outputStream = new FileOutputStream(info);
            PrintWriter out = new PrintWriter(outputStream);
            Scanner scan = new Scanner(System.in);
            System.out.println("Enter a username: ");
            String username = scan.nextLine();
            System.out.println("Enter a password: ");
            String password = scan.nextLine();
            out.println(username + " " + password);

            out.flush();


        }catch(IOException e){
            e.printStackTrace();
        }

    }

Мне нужен мой файл info.txt для хранения всех имен пользователей и паролей каждой пары в отдельной строке, однако он хранит только самые последние. То есть каждый раз, когда я пишу в файл info.txt, он перезаписывает самую последнюю пару (имя пользователя и пароль). Есть ли способ обойти это?

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Java FileWriter конструктор называется так:

новый FileWriter (String s, логическое добавление);

Этот простой конструктор указывает, что вы хотите записать файл в режиме добавления.

Попробуйте следующий код:

private static void Register() throws FileNotFoundException{
        try{            

            FileWriter fw = new FileWriter("info.txt", true);
            BufferedWriter bw = new BufferedWriter(fw);
            PrintWriter out = new PrintWriter(bw);           


            Scanner scan = new Scanner(System.in);
            System.out.println("Enter a username: ");
            String username = scan.nextLine();
            System.out.println("Enter a password: ");
            String password = scan.nextLine();
            out.println(username + " " + password);

            out.flush();


        }catch(IOException e){
            e.printStackTrace();
        }
    }
0 голосов
/ 01 мая 2018

Используйте этот конструктор вместо. new FileOutputStream(info,true);

...