Bufferedwriter не записывает в файл
Я хочу записать строку в файл (используйте Java 8). Этот фрагмент кода компилируется без каких-либо ошибок, но не записывается в файл . я нуб из корца . есть предложения?
Вы должны закрыть файл после записи в него. Никогда не оставляйте ресурс открытым. И вы должны использовать "Попробуйте с ресурсами"
попробуйте с ресурсами или добавьте writer.close();
писатель.close (); помогите спасибо :)
Ответы 4
Он может не записывать в файл, пока вы его не закроете - запись на диск занимает много времени, поэтому он ждет, пока будет записано достаточное количество символов, прежде чем фактически поместить их в файл. Вот что означает "Буферизованный в BufferedWriter ". Если вы его закроете, он «сбросит» буфер на диск.
Самостоятельно закрыть можно с помощью writer.close()
Или вы можете использовать попробовать с ресурсами, который автоматически закроет писатель:
Вам нужно закрыть писатель, вы можете использовать попробовать с ресурсами:
Или просто добавьте writer.close() :
Небольшое улучшение: перехват исключения не означает, что файл отсутствует во всех случаях. Вы должны поймать FileNotFoundException , если вас интересует это «событие», и поймать IOException для других условий ошибки, с которыми вы можете столкнуться при работе с io. Кроме того, вы можете переместить предложение catch во внутренний блок try.
@ sn42 Я только что скопировал код из вопроса и дополнил :)
@PeterSamokhin Конечно, это хороший ответ, решающий исходную проблему. Отличный ответ мог бы либо указать, что предоставленный вами код содержит ошибку (неудачные операции ввода-вывода не указывают на отсутствие файла во всех случаях), либо изменить исходный код и объяснить, почему эти изменения необходимы или желательны. Думаю, эти советы будут особенно полезны разработчикам, начинающим с Java. К вашему сведению, это улучшение, без исправлений :)
Альтернативой BufferWriter является Files.write (Путь, байт [], OpenOption . ), если вы хотите записать в файл только один раз.
Читайте также: