Когда java.io.InputStream для локального файла когда-нибудь выдаст исключение при закрытии? - PullRequest
2 голосов
/ 23 января 2012

Добрый день всем.Мне известно, что если мы close () java.io.OutputStream , , это может вызвать IOException при возникновении ошибок жесткого диска.

Что касается java.io.InputStream , Javamex утверждает, что:

Нормальное закрытие сетевого сокета фактически включает запрос закрытия(TCP / IP FIN пакет) отправляется по соединению и ожидает, пока другой конец подтвердит этот запрос на закрытие.(Фактически, другой конец соединения затем, в свою очередь, отправляет запрос закрытия, который закрывающий конец подтверждает.) Таким образом, в случае входного потока сокета операция закрытия фактически включает в себя отправку трафика по соединению, и закрытие может, таким образом,ошибка с ошибкой.

Теперь мне было интересно, при каких обстоятельствах будет java.io.InputStream (или подкласс) для локального файла (доступ к сети). не требуется ) ever выдает исключение, когда мы вызываем close () ?

1 Ответ

2 голосов
/ 23 января 2012

Вот одна ситуация:

  • Другая часть приложения по ошибке закрыла базовый дескриптор файла, связанный с InputStream. Когда среда выполнения Java вызывает системную функцию close(), она может получить ошибку EBADF, указывающую на то, что дескриптор файла недействителен.

Вышеуказанная ситуация, вероятно, указывает на серьезную ошибку где-то еще в приложении.

...