什么时候关闭 HSSFWorkbook 的构造函数中使用的 InputStream 对象?
When to close the InputStream object used in the constructor of HSSFWorkbook?
我正在使用 HSSFWorkbook
,我想知道我应该在哪里关闭我在构建 HSSFWorkbook
对象时使用的 InputStream
对象。 HSSFWorkbook 是否在其构造函数本身中关闭流?还是我们需要手动关闭它?我们可以在构造函数调用后立即关闭它吗?即,HSSFWorkbook
对象是否仅在其构造函数中使用 InputStream
对象?还是将来也可以使用它(在这种情况下我们不能关闭它)?谢谢。
public HSSFWorkbook loadSheet(File file) throws FileNotFoundException, IOException {
return new HSSFWorkbook(new FileInputStream(file));
}
HSSFWorkbook
的构造函数没有说明 InputStream
是关闭还是打开,所以乍一看你不应该假设它会关闭。然而,深入挖掘,另一方面,在构造函数本身中使用的 class 的构造函数确实清楚地说明了它的行为。
至少在 Apache POI 4.0.0 中,对 new HSSFWorkbook(inputStream)
的调用将导致对 new POIFSFileSystem(inputStream)
的调用,在其实现中,确实似乎总是关闭流和构造函数文档证实了。
这似乎指向您问题的以下答案:
HSSFWorkbook
是否在其构造函数本身中关闭流?是的,间接地。
- 还是需要手动关闭?显然不是,除非他们决定不再依赖
POIFSFileSystem
,这似乎不太可能。
- 我们可以在构造函数调用后立即关闭它吗?显然,是的......但没有必要。
- 即
HSSFWorkbook
对象仅在其构造函数中使用 InputStream
对象吗?显然是这样。
我正在使用 HSSFWorkbook
,我想知道我应该在哪里关闭我在构建 HSSFWorkbook
对象时使用的 InputStream
对象。 HSSFWorkbook 是否在其构造函数本身中关闭流?还是我们需要手动关闭它?我们可以在构造函数调用后立即关闭它吗?即,HSSFWorkbook
对象是否仅在其构造函数中使用 InputStream
对象?还是将来也可以使用它(在这种情况下我们不能关闭它)?谢谢。
public HSSFWorkbook loadSheet(File file) throws FileNotFoundException, IOException {
return new HSSFWorkbook(new FileInputStream(file));
}
HSSFWorkbook
的构造函数没有说明 InputStream
是关闭还是打开,所以乍一看你不应该假设它会关闭。然而,深入挖掘,另一方面,在构造函数本身中使用的 class 的构造函数确实清楚地说明了它的行为。
至少在 Apache POI 4.0.0 中,对 new HSSFWorkbook(inputStream)
的调用将导致对 new POIFSFileSystem(inputStream)
的调用,在其实现中,确实似乎总是关闭流和构造函数文档证实了。
这似乎指向您问题的以下答案:
HSSFWorkbook
是否在其构造函数本身中关闭流?是的,间接地。- 还是需要手动关闭?显然不是,除非他们决定不再依赖
POIFSFileSystem
,这似乎不太可能。 - 我们可以在构造函数调用后立即关闭它吗?显然,是的......但没有必要。
- 即
HSSFWorkbook
对象仅在其构造函数中使用InputStream
对象吗?显然是这样。