Вы должны открыть и закрыть InputStreams
, OutputStreams
и другие подобные ресурсы, как можно скорее (в ближайшей возможной области видимости).Например, если я хочу отправить файл, необходимо выполнить следующие шаги:
- Открыть
OutputStream
. - Отправить байты.
- Закрыть
OutputStream
.
Если вы не закроете такие ресурсы, вы столкнетесь с утечкой памяти .
Вы можете использовать ресурсы для попытки , чтобы вы моглине забудем случайно закрыть свой ресурс.Вы можете использовать любой понравившийся вам ресурс с try-with resources , если он реализует интерфейс AutoClosable
.(InputStream
и OutputStream
действительно реализуют интерфейс AutoClosable
).
пример использования ресурсов try-with:
try (InputStream fis = new FileInputStream(source);
OutputStream fos = new FileOutputStream(target)){
byte[] buf = new byte[8192];
int i;
while ((i = fis.read(buf)) != -1) {
fos.write(buf, 0, i);
}
}
catch (Exception e) {
e.printStackTrace();
}
Примечание : обаInputStream
И OutputStream
находятся в инструкции try-with resources, в приведенном выше примере.