file.delete无法删除文件解决 您所在的位置:网站首页 文件夹是空的删除不了 file.delete无法删除文件解决

file.delete无法删除文件解决

2023-11-11 22:26| 来源: 网络整理| 查看: 265

file.delete()无法删除文件的问题排查思路

一般遇到这种问题,需要思考,没有删除的文件是什么原因造成的,常见的有:

1. 第一种是不是你本地打开该文件,导致系统占用该文件,这种先自查。 2. 代码种有对该文件操作的流未全部关闭,导致文件被java进程占用无法上传。 3. 要删除的文件名称路径是否有错误,导致文件不存在。 4. 假如是文件夹需要看文件夹下面是否有文件,一般文件夹如果有文件,删除虽然不会报错,但是返回的是false,也不能删除。

上代码:第一版 第一次考虑到可能是文件被占用,所以使用GC打算释放资源,结果失败了

/** * @description: 删除单个文件 * @params [descDir] * @author: silencer * @version: 1.0.Rel * @date: 2021/4/2 11:30 */ public static void deleteZipFile(String descDir) { File file =new File(descDir); File[] files = file.listFiles(pathname -> { if (pathname.isFile() && pathname.getName().endsWith(".zip")) { return true; } return false; }); Arrays.stream(files).forEach(e->{ logger.info("已删除源文件:{}",files.length); System.gc(); e.delete(); }); }

改正后 第二版 细看 发现是zip文件流未关闭,关闭即可

/*** * @description: 解压文件到指定目录 * @params / * @author: silencer * @version: 1.0.Rel * @date: 2021/4/2 11:08 */ public static void unZipFiles(File zipFile, String descDir) throws IOException { File pathFile = new File(descDir); if (!pathFile.exists()) { pathFile.mkdirs(); } //解决zip文件中有中文目录或者中文文件 ZipFile zip = new ZipFile(zipFile, Charset.forName("GBK")); for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) { ZipEntry entry = (ZipEntry) entries.nextElement(); String zipEntryName = entry.getName(); InputStream in = zip.getInputStream(entry); String outPath = (descDir + zipEntryName).replaceAll("\\*", "/"); //判断路径是否存在,不存在则创建文件路径 File file = new File(outPath.substring(0, outPath.lastIndexOf('/'))); if (!file.exists()) { file.mkdirs(); } //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压 if (new File(outPath).isDirectory()) { continue; } //输出文件路径信息 System.out.println(outPath); OutputStream out = new FileOutputStream(outPath); byte[] buf1 = new byte[1024]; int len; while ((len = in.read(buf1)) > 0) { out.write(buf1, 0, len); } in.close(); out.close(); } //如果zip包不关闭,就无法删除zip zip.close(); //确保没有多层结构压缩文件 //删除压缩文件 zipFile.delete(); // 递归查找zip文件,解压并删除 recursion(descDir); }

以上就解决了,写代码还是要细心一点,仔细检查有时候不是什么大问题,而是我们太粗心。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有