Я получаю ввод идентификационных номеров и записываю каждый идентификатор в файл по мере его ввода. Идентификатор, записанный в файл, является просто резервной копией в случае сбоя программы по какой-либо причине (это небольшая личная вещь). Итак, если есть неожиданное завершение работы, у меня будет только текстовый файл, содержащий все идентификационные номера, которые я уже ввел. Тем не менее, я замечаю, что идентификатор не сохраняется в файле до тех пор, пока.close() не будет выполнен, когда я его закрою вручную, но это просто победит цель.
Это мой первый раз, когда я делаю что-то подобное, поэтому я не уверен, что такое правильный подход. Есть ли способ сохранить текст, не закрывая BufferedWriter? Или приемлемо ли закрыть его и как-то открыть его?
Спасибо вам за ваши предложения!
Как заявил Эллиотт в комментариях, flush()
на BufferedWriter
заставит его записать его место назначения. BufferedWriter
реализует интерфейс Flushable
, в котором javadoc заявляет:
Метод flush вызывается для записи любого буферизованного вывода в базовый поток.
Это именно то, что вам нужно
Вы можете использовать метод flush() после записи в BufferedWriter или если вы не хотите беспокоиться о том, чтобы слить, тогда вы можете использовать PrintWriter и настроить его с помощью autoflush:
public PrintWriter(OutputStream out,
boolean autoFlush)
Создает новый PrintWriter из существующего OutputStream. Этот конструктор удобства создает необходимый промежуточный OutputStreamWriter, который преобразует символы в байты с использованием кодировки по умолчанию.
Параметры:
out - выходной поток autoFlush - логический; если true, методы println, printf или format будут очищать выходной буфер
надеюсь это поможет.
flush()
.