一.原因:使用EasyExcel进行数据读取IO流,读取之后,IO流没有关闭,导致文件一直处于被读取状态,无法对该文件进行删除操作
二、解决方法。读取数据之后,关闭IO流操作
// 创建File对象
File file = new File(filePath);
// 创建FileInputStream对象
InputStream inputStream = new FileInputStream(file);
//创建监听器
XykFirstBrushExcelListener excelListener = new XykFirstBrushExcelListener();
// 读取Excel文件
EasyExcel.read(file, XykFirstBrushExcel.class, excelListener).sheet(1).doRead();
// 获取解析后的数据
List<XykFirstBrush> dataList = excelListener.getDataList();
List<XykFirstBrush> reportList = new ArrayList<>();
if (dataList.size() > 0) {
log.info("----------开始导入数据----------");
for (XykFirstBrush firstBrush : dataList) {
XykFirstBrush oldData = xykFirstBrushMapper.getByIsExists(firstBrush);
if (oldData != null) {
// 如果有数据不做修改
} else {
// 数据不存在插入
firstBrush.setId(Utils.getUUID());
firstBrush.setImportTime(new Date());
firstBrush.setUpdateTime(new Date());
reportList.add(firstBrush);
}
}
List<List<XykFirstBrush>> submitList = ListUtil.split(reportList, 200);
for (List<XykFirstBrush> list : submitList) {
// xykFirstBrushMapper.batchXykFirstBrushInsert(list);
BatchInsertTask task = new BatchInsertTask(list);
executorService.execute(task);
}
executorService.shutdown();
// 关闭线程池
log.info("----------导入数据完成----------");
inputStream.close();
inputStream.close();
三、结果
IO流操作关闭,删除操作调用成功,文件被成功删除。