Закрывает ли InputStreams и OutputStreams в Java() при уничтожении? Я полностью понимаю, что это может быть дурным тоном (особенно в мире C и C++), но мне любопытно.
Кроме того, предположим, что у меня есть следующий код:
private void foo()
{
final string file = "bar.txt";
Properties p = new Properties();
p.load( new FileInputStream(file) );
//...
}
Выходит ли безымянный FileInputStream из области видимости после p.load() и, следовательно, уничтожается, как в правилах области видимости С++? Я попытался найти область анонимных переменных для java в Google, но это не оказалось тем, что я думал.
Спасибо.
tryс ресурсами в Java 7 или выше сделало бы исправление этой проблемы относительно простой операцией (требуется только одно дополнительное назначение переменной и, конечно же, самtry). Также обратите внимание, что приведенный выше код будет генерировать предупреждение (об отсутствующем закрытии) в моей среде Eclipse. - person Maarten Bodewes   schedule 11.02.2016