file.delete无法删除文件解决
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包不关闭,就无法删除zipzip.close();//确保没有多层结构压缩文件//删除压缩文件zipFile.delete();// 递归查找zip文件,解压并删除recursion(descDir);}
以上就解决了,写代码还是要细心一点,仔细检查有时候不是什么大问题,而是我们太粗心。
file.delete无法删除文件解决相关推荐
- 关于java文件删除file.delete()无法删除文件的处理办法
1.问题: file.delete()无法删除文件file.delete()无法删除文件,无论执行多少次结果都为false: 2.分析原因: 1).有可能有流对该文件进行操作,或者是流操作完没有进行关 ...
- java delete file 失败_file.delete()无法删除文件的原因及解决方法
file.delete()无法删除文件的原因及解决方法 发布时间:2020-05-06 09:41:00 来源:亿速云 阅读:756 作者:小新 今天小编给大家分享的是file.delete()无法删 ...
- centos删除文件不释放_Linux运维知识之linux centos下彻底删除文件 解决删除文件文件夹硬盘空间不释放不减少...
本文主要向大家介绍了Linux运维知识之linux centos下彻底删除文件 解决删除文件文件夹硬盘空间不释放不减少,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 最近删除一 ...
- win10杀毒防护已经关闭了还是删除文件解决方法
win10是一款很好用的电脑系统,该系统的病毒拦截功能很强大,有些用户遇到了杀毒防护关闭了但是文件还是会被删除的情况,下面小编就带来了解决的方法,感兴趣的话快来看看吧. win10杀毒防护已经关闭了 ...
- 解决file.delete()无法删除部分文件的问题
写了一个3个文件读取并写入到一个文件的程序,但再将写入完成后的这三个文件删除的时候却出现了第一个无法删除,第二和第三个可以删除的问题,找了半天也没有找到,我的代码如下: 读取并写入的方法: try { ...
- 转!!java中File的delete()方法删除文件失败的原因
一般来说 java file.delete失败 有以下几个原因 1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用) 2.file是文件夹 并且不为空,有别的文件夹或文件, 3. ...
- java 删除文件失败_java中File的delete()方法删除文件失败的原因
一般来说 java file.delete失败 有以下几个原因 1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用) 2.file是文件夹 并且不为空,有别的文件夹或文件, 3.极有 ...
- Java17-day08【File(创建和删除文件、判断和获取功能、遍历目录)、IO流(字节流写数据、异常处理、字节流读数据、复制文本文件、复制图片)】
视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java ...
- File类的删除文件夹(有目录,无目录)
众所周知,File类中的delete是无法直接删除有目录的文件夹的. 删除文件时 文件为空 : 直接删除 不为空 : 无法删除(必须将其变为空文件才能删除) 不存在 : 返回false 便于理解 删除 ...
最新文章
- 三十九、@staticmethod、@classmethod和@property类装饰器
- 01-HTML基础与进阶-day5-录像262
- 达文西画中的数学密码
- qt通过代码创建滚动区域,添加滚动区域到窗口
- 一觉醒来感觉自己回到了九八年, 让大数据来解释
- 神舟刷蓝天w650dbios_在DOS中给神舟蓝天刷EC和BIOS的通用方法【AMI】
- 苹果mac系统监控工具:iStat Menus
- MAC代码下统计代码行数工具
- jeb 导出java_[原创] JEB2插件,导出APK资源文件
- toolchain安装教程支持_Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法...
- 我的世界空岛生存服务器制作,我的世界:空岛生存“岩浆”没了咋办?大佬给出了6种解决方案!...
- 印度软件业为什么?把脉中国软件企业
- python面向对象的编程_python面向对象的编程
- 4005. 取石子游戏
- 三星在中国一面撤资,一面增资是为何?
- iOS多线程编程之NSThread的使用(★★★推荐,为原作者点赞★★★)
- Cadence Allegro 过孔通孔盲孔埋孔详细说明及设计举例图文教程
- C语言实现五子棋小游戏,草履虫都直呼不过如此
- CY7C68000 UTMI PHY芯片介绍
- wps交叉表_WPS交叉引用的使用方法