Почему бы нам не закрыть поток `System.out` после его использования? - PullRequest
20 голосов
/ 18 сентября 2011

Я просто хочу знать, мы обычно закрываем потоки в конце, но почему бы нам не закрыть System.out PrintStream с System.out.close()?

Ответы [ 3 ]

23 голосов
/ 18 сентября 2011

Если вы закроете его, вы больше не сможете писать на консоль, поэтому давайте оставим эту задачу виртуальной машине, когда процесс завершится. Вы должны закрывать только те потоки, которые у вас есть или которые вы создали вручную. System.out находится вне вашего контроля, поэтому предоставьте его создателю, чтобы позаботиться.

16 голосов
/ 18 сентября 2011

потому что мы не открывали его, а виртуальная машина открывала его, если не задокументировано иное,

это похоже на изречение C ++: я не владею им, не delete это.

5 голосов
/ 18 сентября 2011

Вы все еще можете очистить (), конечно.

...