带有自定义临时文件的SXSSFWorkbook

时间:2015-06-22 21:35:44

标签: apache-poi

SXSSFWorkbook做我想要的,但我想使用不同类型的临时文件,然后提供的内容和看似融入实现的内容。

在SheetDataWriter中

toUpdate

所以...我可以通过创建一个MySheetDataWriter并覆盖对createTempFile的调用来扩展它。但是,我无法在SXSSFWorkbook中使用MySheetDataWriter ...如果我尝试扩展它,则无法覆盖包受保护的方法...因为它不可见。 来自SXSSFWorkbook

 public File createTempFile() throws IOException {
        return TempFile.createTempFile("poi-sxssf-sheet", ".xml");
    }

所以最重要的是我可以使用几乎完全相同的实现,但我需要一种不同类型的Temp文件......甚至不是只是一个不同的目录来放入它,而是一个完全不同的实现。关于如何做到这一点的任何想法?

1 个答案:

答案 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;
  }
});