SXSSFWorkbook做我想要的,但我想使用不同类型的临时文件,然后提供的内容和看似融入实现的内容。
在SheetDataWriter中
toUpdate
所以...我可以通过创建一个MySheetDataWriter并覆盖对createTempFile的调用来扩展它。但是,我无法在SXSSFWorkbook中使用MySheetDataWriter ...如果我尝试扩展它,则无法覆盖包受保护的方法...因为它不可见。 来自SXSSFWorkbook
public File createTempFile() throws IOException {
return TempFile.createTempFile("poi-sxssf-sheet", ".xml");
}
所以最重要的是我可以使用几乎完全相同的实现,但我需要一种不同类型的Temp文件......甚至不是只是一个不同的目录来放入它,而是一个完全不同的实现。关于如何做到这一点的任何想法?
答案 0 :(得分:2)
从版本3.11开始,您提及的createTempFile
方法(来自班级TempFile
)使用可替换的TempFileCreationStrategy
,可以使用setTempFileCreationStrategy
方法进行选择。
以下示例扩展了默认策略以记录创建的每个临时文件,但您可以将其更改为返回自定义File
实例。
TempFile.setTempFileCreationStrategy(new TempFile.DefaultTempFileCreationStrategy() {
@Override
public File createTempFile(String prefix, String suffix) throws IOException {
File f = super.createTempFile(prefix, suffix);
log.debug("Created temp file: " + f);
return f;
}
});