Если вы открываете много файлов, и если вы их не закрываете, ваша операционная система не сможет открывать больше файлов через некоторое время.
Кроме того, в то время как ваш BufferedWriter
не был собран с мусором, файл, который он писал, останется открытым, насколько ваша операционная система. Если это Windows, вы не сможете удалить файл до тех пор, пока дескриптор файла не будет закрыт, либо BufferedWriter
, наконец, будет собранным мусором, так и выходом JVM.
BufferedWriter.close()
переполнить буфер в основной поток, так что если вы забыли flush()
и не близко, ваш файл не может иметь весь текст вы написали к нему.
BufferedWriter.close()
также закрывает обернутый писатель. Когда это FileWriter, это, в конечном счете, закроет FileOutputStream
и сообщит ОС, что вы закончили запись в файл.
сборщик мусора будет автоматически вызывать close()
, а не на BufferedWriter
или обернутой FileWriter, но на FileOuputStream
. Таким образом, ОС будет счастлива, но вы должны ждать GC.
Однако вы всегда хотите освободить ресурсы ОС, как только они вам больше не понадобятся. Это касается открытых файлов, соединений с базами данных, очередей печати ... всего. Поверь мне в этом.
BufferedWriter.close()
очищает буфер внутренних символов, поэтому память будет доступна для сбора мусора, даже если сам объект BufferedWriter
остается в области видимости.
Проверить here для более подробной информации