easyexcel icon indicating copy to clipboard operation
easyexcel copied to clipboard

poifiles临时文件无法删除

Open wyctxwd1 opened this issue 2 years ago • 4 comments

建议先去看文档 快速开始常见问题 触发场景描述 image

触发Bug的代码 org.apache.poi.xssf.streaming.SXSSFSheet#createRow 在这个类因为磁盘控件不足抛出IO异常时 image

会走到finish中的这个地方 image 但是在执行的过程中因为这个方法之前,流关闭了导致没有删除临时文件

image

这里写代码

**提示的异常或者没有达到的效果**

wyctxwd1 avatar Jun 09 '22 06:06 wyctxwd1

通过随意写一个100行以上的文件在上述断点处用idea抛一个IOException,就可以触发,猜测是因为流关闭,但是sheet中dispose需要落盘,导致报错没有删除临时文件

wyctxwd1 avatar Jun 09 '22 06:06 wyctxwd1

image 是因为这边为false还没有落盘,但是走进去落盘发现流已经在之前被关闭了,我感觉应该在finish里要换个位置com.alibaba.excel.context.WriteContextImpl#finish

wyctxwd1 avatar Jun 09 '22 06:06 wyctxwd1

org.apache.poi.xssf.streaming.SXSSFSheet#allFlushed 可能在报错的时候需要反射把这个值改成true然后才能删除,不然在磁盘满的情况下flush磁盘的时候还是无法删除临时文件

wyctxwd1 avatar Jun 09 '22 10:06 wyctxwd1

遇到了同样的问题,当磁盘已满时,这个dispose方法会调用失败,最后导致临时文件无法被清理。

WaitRainbow avatar Dec 22 '22 02:12 WaitRainbow