尘世壹俗人 2022-11-08 22:57 采纳率: 88%
浏览 24
已结题

java 删除文件线程冲突有什么解决方法吗

java代码上一步是把n个结果文件打包,要求是当程序结束后,将除了结果的压缩文件,其他程序运行中生成的单个文件都删除,但在写代码的时候会报一个线程的错,根据debug发现有两个问题,一是结果文件还没有写进压缩包下面的文件就开始删了,整个程序主体处理文件用的定长线程池,不过后面的打包和删除文件在主线程里面,第二个原因也是应为前面处理文件用的多线程所以造成有时候可以删除部分文件,有的时候就报后面显示的错。如果把删除文件的步骤注释掉则功能无异常,有什么可行的解决方法吗?

出问题的是下面的代码

//文件打包成zip
File zipResult = new File(resultPath,"result.zip");
//调用工具类把jieguo_files_arr文件数组打包
FileUtil.zipFiles(jieguo_files_arr,zipResult);

//删掉未打包的文件
File[] deletFiles = new File(resultPath).listFiles();
for (File e : deletFiles ){
    if(!e.getName().equals("result.zip")){
        e.delete();
    }
}

报错如下

Exception in thread "pool-1-thread-1" class com.aspose.pdf.internal.ms.System.lh: An element with the same key already exists in the dictionary.
com.aspose.pdf.internal.ms.System.Collections.Generic.lf.addItem(Unknown Source)

java.lang.NullPointerException: null
    at java.io.FileInputStream.<init>(FileInputStream.java:130) ~[na:1.8.0_181]
    at com.wy.utils.FileUtil.zipFiles(FileUtil.java:81) ~[communal-1.1.jar:na]
    at com.wy.utils.FileUtil.zipFiles(FileUtil.java:105) ~[communal-1.1.jar:na]
    at com.wy.worldmatter.service.impl.PDFSServiceImpl.apPdfToDocx(PDFSServiceImpl.java:182) ~[classes/:na]
  • 写回答

3条回答 默认 最新

  • 尘世壹俗人 2022-11-09 13:05
    关注

    哎呦我去,解决了,吃午饭的时候,发现在排查问题的时候,有一行关流操作被注释掉了整体运行没取消注释

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月9日
  • 已采纳回答 11月9日
  • 创建了问题 11月8日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵