BufferedWriter предотвращает перезапись - PullRequest
0 голосов
/ 21 мая 2019

У меня есть BufferedWriter, который уже пишет в файл, но не так, как я хочу. Я инициализирую его в цикле, заставляя его добавлять только последний результат цикла для добавления в файл. На самом деле это нормально для меня, но предыдущие результаты в файле удаляются. Я хочу, чтобы результат был добавлен без удаления предыдущих результатов.

Я попытался создать статический Buffered Reader, чтобы не всегда создавать новые экземпляры Buffered Reader в цикле. Но это невозможно, так как вам нужен блок "try".

public void actionPerformed(ActionEvent e) {
            String s;
            try {
                if (parseInt(jTextFieldNumber.getText()) == random) {
                    info.setText("Attempt # " + counter + ": " + 
parseInt(jTextFieldNumber.getText()) + " ==> correct!");
                    ok.setEnabled(false);
                } else if (parseInt(jTextFieldNumber.getText()) < random) 
{
                    info.setText("Attempt # " + counter + ": " + 
parseInt(jTextFieldNumber.getText()) + " ==> too small!");
                } else {
                    info.setText("Attempt # " + counter + ": " + 
parseInt(jTextFieldNumber.getText()) + " ==> too big!");
                }
            } catch (NumberFormatException nfe) {
                nfe.printStackTrace();
                System.exit(0);
            }
                s = jTextFieldName.getText() + " " + counter;
                BufferedWriter bw;
                try {
                    bw = new BufferedWriter(new 
FileWriter("C:\\wrk\\SapCommerceCloud\\src\\SwingUni\\events1\\name"));
                    bw.append(s);
                    if(info.getText().equals("Attempt # " + counter + ": 
" + parseInt(jTextFieldNumber.getText()) + " ==> correct!")){
                        bw.close();
                    }
                } catch (IOException io) {
                    io.printStackTrace();
                }
            counter++;
        }
    };

Ответы [ 3 ]

1 голос
/ 21 мая 2019

Я думаю, что вы спрашиваете, как добавить файл, даже если вы создаете новые BufferedWriters.

Использовать средство записи файлов со вторым параметром как true, например:

try {
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true)));
    out.println("the text");
    out.close();
} catch (IOException e) {
    //exception handling left as an exercise for the reader
}

См: Как добавить текст в существующий файл в Java

0 голосов
/ 21 мая 2019

FileWriter имеет конструктор public FileWriter(String fileName, boolean append) throws IOException.Если вы используете true как добавление, файл не будет перезаписан , см. Javadoc FileWriter

Лучшим решением для вас может быть использование one FileWriter.

0 голосов
/ 21 мая 2019

Использование

 bw = new BufferedWriter(new 
FileWriter("C:\\wrk\\SapCommerceCloud\\src\\SwingUni\\events1\\name", true));

Вызов этого конструктора Test

FileWriter(String fileName, boolean append)
Constructs a FileWriter object given a file name with a boolean indicating whether or not to append the data written.
...