我正在使用HSSFWorkbook,我想知道在哪里关闭我在构造HSSFWorkbook对象时使用的InputStream对象。HSSFWorkbook是否在其构造函数本身中关闭流?还是我们需要手动关闭它?我们能在构造函数调用之后关闭它吗?也就是说,HSSFWorkbook对象是否仅在其构造函数中使用InputStream对象?或者将来也可以使用它(在这种情况下,我们不能关闭它)?谢谢。
public HSSFWorkbook loadSheet(File file) throws FileNotFoundException, IOException {
return new HSSFWorkbook(new FileInputStream(file));
}发布于 2020-02-14 11:19:27
HSSFWorkbook的构造函数没有说明InputStream是关闭的还是打开的,所以乍一看,您不应该假设它将被关闭。然而,深入挖掘,另一方面,构造函数本身中使用的类的构造函数确实清楚地说明了它的行为。
至少在ApachePOI4.0.0中,对new HSSFWorkbook(inputStream)的调用将导致对new POIFSFileSystem(inputStream)的调用,而在它的实现中,这个调用似乎总是关闭流,构造函数文档确认了它。
这似乎指向了对你的问题的以下回答:
HSSFWorkbook是否在其构造函数本身中关闭流?是的,间接的。POIFSFileSystem,这似乎是我们可以在构造函数调用之后关闭它吗?显然,是的..。HSSFWorkbook对象是否仅在其构造函数中使用InputStream对象?显然是这样的。https://stackoverflow.com/questions/60224963
复制相似问题