[alibaba/easyexcel]写入execl到file上传后删除file会报file正在被进程使用无法删除

2023-03-26 173 views
4

写入execl到file上传后删除file会报file正在被进程使用无法删除 场景: 导出execl上传到oss后,删除文件报错

回答

0

写入文件能正常使用就是你自己代码的问题

8

我也有这个问题,实际上是文件名没有做好线程隔离,是不是使用了多线程,在并发比较多的情况下发生的?

9

cn.hutool.core.io.IORuntimeException: FileSystemException: E:\project\new-srm\srm-admin-server\Task\common\2023-03-27\导入商户关联商品执行结果1640270785573785600.xlsx: 另一个程序正在使用此文件,进程无法访问。

at cn.hutool.core.io.FileUtil.del(FileUtil.java:775)
at io.srm.modules.task.strategy.ImportMerchantRelevanceGoodsTaskHandel.invoke(ImportMerchantRelevanceGoodsTaskHandel.java:77)
at io.srm.modules.task.service.impl.TaskMangerServiceImpl.lambda$null$0(TaskMangerServiceImpl.java:105)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Caused by: java.nio.file.FileSystemException: E:\project\new-srm\srm-admin-server\Task\common\2023-03-27\导入商户关联商品执行结果1640270785573785600.xlsx: 另一个程序正在使用此文件,进程无法访问。

at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1126)
at cn.hutool.core.io.file.PathUtil.delFile(PathUtil.java:693)
at cn.hutool.core.io.FileUtil.del(FileUtil.java:770)
... 8 more
8

任务是异步线程跑的,但是下载读的file是可以删除的,只是说写入上传后这个文件就不能删除了

3

image

1

删除就会报错说该文件正在被使用中

7

删除就会报错说该文件正在被使用中

那确实文件正在被使用了,需要检查一下程序代码,这个应该跟EasyExcel没有关系。