SXSSFWorkbook写入大量数据的两点处理

初用SXSSFWorkbook,感觉以读写大量数据为买点的SXSSFWorkbook,提供出了两个API,作为对大量数据处理的方式。这里对这两个API做一个小总结。

  1. 构造入参rowAccessWindowSize
    这个参数,会指定一个sheet可读取的row数目,超过该数目的row,会被写入到磁盘文件中,进而不能在通过getRow访问到,通过这种方式,内存使用空间就缩小很多了。
    需要注意的是,如果该值指定为-1,说明不限制行数,所有记录都写入内存中;该值不能取0,因为这意味着任何新row都会写入磁盘,进而不能访问,但是新row还没来得及createCell

  2. setCompressTempFiles方法
    当写sheet的时候,临时文件可能远比结果文件要大,所以提供了压缩临时文件的接口,通过压缩,磁盘上的xml的临时文件将会被打包,进而降低磁盘占用空间。

通过上述两个API,我认为,SXSSFWorkbook解决了写入大量数据内存和磁盘占用空间太大的问题,但是随之而来的,因为要做内存写磁盘和磁盘临时文件的压缩,我认为,效率上,可能会慢于所有数据都加载到内存中的方式。这也是一种取舍。

你可能感兴趣的:(Java,知识,Java代码片段)