Конструктор HSSFWorkbook
не указывает, будет ли InputStream
закрыт или оставлен открытым, поэтому на первый взгляд не следует предполагать, что он будет закрыт. Однако, копаясь глубже, конструктор класса, используемого в самом конструкторе, с другой стороны, четко определяет его поведение.
По крайней мере в Apache POI 4.0.0 вызов new HSSFWorkbook(inputStream)
приведет к вызов new POIFSFileSystem(inputStream)
, который в своей реализации действительно всегда закрывает поток, и документация конструктора подтверждает это.
Это может указывать на следующие ответы на ваши вопросы:
- Закрывает ли
HSSFWorkbook
поток в самом конструкторе? Да, косвенно. - Или нам нужно закрыть его вручную? Очевидно, нет, если только они не решат больше не полагаться на
POIFSFileSystem
, что кажется маловероятным. - И можем ли мы закрыть его сразу после вызова конструктора? По-видимому, да ... но в этом нет необходимости.
- т.е. объект
HSSFWorkbook
использует объект InputStream
только в своем конструкторе? Видимо так.