Есть ли способ сохранить файл, в который я пишу, на Java без использования метода .close ()?

1

Я получаю ввод идентификационных номеров и записываю каждый идентификатор в файл по мере его ввода. Идентификатор, записанный в файл, является просто резервной копией в случае сбоя программы по какой-либо причине (это небольшая личная вещь). Итак, если есть неожиданное завершение работы, у меня будет только текстовый файл, содержащий все идентификационные номера, которые я уже ввел. Тем не менее, я замечаю, что идентификатор не сохраняется в файле до тех пор, пока.close() не будет выполнен, когда я его закрою вручную, но это просто победит цель.

Это мой первый раз, когда я делаю что-то подобное, поэтому я не уверен, что такое правильный подход. Есть ли способ сохранить текст, не закрывая BufferedWriter? Или приемлемо ли закрыть его и как-то открыть его?

Спасибо вам за ваши предложения!

  • 5
    Вы можете попробовать вызвать flush() .
  • 0
    Отлично! Это было именно так. Я прошу прощения за простой вопрос.
Показать ещё 2 комментария
Теги:

2 ответа

3

Как заявил Эллиотт в комментариях, flush() на BufferedWriter заставит его записать его место назначения. BufferedWriter реализует интерфейс Flushable, в котором javadoc заявляет:

Метод flush вызывается для записи любого буферизованного вывода в базовый поток.

Это именно то, что вам нужно

3

Вы можете использовать метод flush() после записи в BufferedWriter или если вы не хотите беспокоиться о том, чтобы слить, тогда вы можете использовать PrintWriter и настроить его с помощью autoflush:

public PrintWriter(OutputStream out,
           boolean autoFlush) 

Создает новый PrintWriter из существующего OutputStream. Этот конструктор удобства создает необходимый промежуточный OutputStreamWriter, который преобразует символы в байты с использованием кодировки по умолчанию.

Параметры:

out - выходной поток autoFlush - логический; если true, методы println, printf или format будут очищать выходной буфер

надеюсь это поможет.

Ещё вопросы

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