Попробуйте Java с ресурсами и внешним управляемым потоком, завернутымJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Попробуйте Java с ресурсами и внешним управляемым потоком, завернутым

Сообщение Anonymous »

У меня есть такой код:

Код: Выделить всё

 try (BufferedInputStrea stream = new BufferedInputStream(inputStream)) {

// some logic
}

Код: Выделить всё

servletRequest.getInputStream()
взят из объекта HttpServletRequest.
Меня беспокоит следующее:
Приведенный выше код закроет объект BufferedInputStream, который закроет базовый поток ввода, полученный из сервлета. и теоретически я НЕ ДОЛЖЕН этого делать, поскольку сервлет будет управлять своим потоком при закрытии (поэтому он закроет его самостоятельно).
Итак, если я не хочу закрывать поток я должен создать новый класс Stream, который расширяет BufferedInputStream и добавляет пустой метод закрытия, чтобы он не закрывал базовый поток.
Конечно, я могу иметь анонимную реализацию, которая будет эффективно делать то же самое.
Мне оба решения кажутся уродливыми, но другого варианта я не вижу.
Другой вариант — не закрывать объект BufferedInputStream, а сделать это Я должен быть уверен, что у него нет никаких внутренних ресурсы должны быть освобождены.
Для меня это очень простой случай, который должен случаться довольно часто, и мне интересно, какие здесь лучшие практики.
Я использую Java 11 и загрузку Spring (если это вообще имеет значение)


Подробнее здесь: https://stackoverflow.com/questions/793 ... am-wrapped
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»