Bufferedwriter не записывает в файл

Обновлено: 07.07.2024

Я хочу записать строку в файл (используйте Java 8). Этот фрагмент кода компилируется без каких-либо ошибок, но не записывается в файл . я нуб из корца . есть предложения?

Вы должны закрыть файл после записи в него. Никогда не оставляйте ресурс открытым. И вы должны использовать "Попробуйте с ресурсами"

попробуйте с ресурсами или добавьте writer.close();

писатель.close (); помогите спасибо :)

Ответы 4

Он может не записывать в файл, пока вы его не закроете - запись на диск занимает много времени, поэтому он ждет, пока будет записано достаточное количество символов, прежде чем фактически поместить их в файл. Вот что означает "Буферизованный в BufferedWriter ". Если вы его закроете, он «сбросит» буфер на диск.

Самостоятельно закрыть можно с помощью writer.close()

Или вы можете использовать попробовать с ресурсами, который автоматически закроет писатель:

Вам нужно закрыть писатель, вы можете использовать попробовать с ресурсами:

Или просто добавьте writer.close() :

Небольшое улучшение: перехват исключения не означает, что файл отсутствует во всех случаях. Вы должны поймать FileNotFoundException , если вас интересует это «событие», и поймать IOException для других условий ошибки, с которыми вы можете столкнуться при работе с io. Кроме того, вы можете переместить предложение catch во внутренний блок try.

@ sn42 Я только что скопировал код из вопроса и дополнил :)

@PeterSamokhin Конечно, это хороший ответ, решающий исходную проблему. Отличный ответ мог бы либо указать, что предоставленный вами код содержит ошибку (неудачные операции ввода-вывода не указывают на отсутствие файла во всех случаях), либо изменить исходный код и объяснить, почему эти изменения необходимы или желательны. Думаю, эти советы будут особенно полезны разработчикам, начинающим с Java. К вашему сведению, это улучшение, без исправлений :)

Альтернативой BufferWriter является Files.write (Путь, байт [], OpenOption . ), если вы хотите записать в файл только один раз.

Читайте также: