"源文件名长度大于文件系统支持的长度无法删除"的解决方案(Java代码实现)

那些写个工具,结果呢,一不小心,就干出来这么个bug.就是在文件夹里创建同名的文件夹,一直创建到软件奔溃.这个问题很低级,但是想手动删除的时候,才发现是多么痛的领悟.

诺,就是这样子,就压根不让你删除….

因Windows文件夹有长度限制,在路径长度达到32767个字符时,删除文件时就会出现因“该文件夹包名称过长且无法放入回收站的项目”错误,因此可用本经验中方法快速安全删除整个文件夹。

这里写图片描述

然后百度各种方案,各种蛋疼,还感觉很高科技的样子.
最为一个软件开发人员,不能忍啊.
于是乎,自己怎么写进去的,就怎么把它删掉吧.

我先说说我的解决方案,其实代码也不是很多,不过是一百来行,还加上注释,引入包名等:

一,遍历这个文件夹;
二,判断这个文件夹下面是否还有文件夹.其实就是判断长度而已;
三,有文件夹,就采用递归的方式继续往下遍历
四,直到最后一个,因为它下面肯定是空的
五,然后一层一层的往前面删
说明:第五点效率非常的低,因为每删除一个就要遍历一次.经过我日志输出,在我的电脑上总共创建了4000多层文件夹(这里要注意.如果你在最外层通过文件的属性查看文件夹的时候,才显示110多个,我不知道其他电脑是否是这样.如下图),如果是一个一个的删除,这需要半个多小时(好吧,我表示我电脑i3的…)

这里写图片描述

刚开始,我删除的时候,以为就119个,我先手动删除,就是进去十多层,然后将里面的剪切出来,然后把这十多层删掉,等我再刷新,在通过文件夹的属性看剪切出来的时候,还是这个数,你知道宝宝心里有多崩溃么,以为是病毒.然后我就写代码,遍历到第100个的时候,删除,额,没错,删不掉,还报了一个栈内存溢出…..

所以针对第五步,看这个最多显示是110多一点,那我每次删除100层应该是没有问题的,事实上这的确可以,效率大大的提高,只需要十多秒………哈哈哈.删完了后,没有删的了,我自己又写了一个无线循环创建文件夹的,然后直到栈内存溢出…..

小手一贱,啥都好办.

好了,我说了这么多,你应该知道我要表达啥了,如果不知道,那就怪我吧.

现在干货来了,特别说明一下,就是还能不能删200层,3000层,甚至1000层呢?我还没有试呢.大神们可以试试.
先来个递归无线创建子文件夹的代码吧:

package com.wangjun.delet;

import java.io.File;

public class CreateFiles {
   
    static int a=1;
    
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值