解决不能删除文件,出现“源文件名长度大于系统支持的长度”的提示。

        无聊中,想写个.java文件为后缀名的编码格式转换器,用途:如果从网络下载下来的源码,或者同事给你他写好的代码,Copy到Eclipse工程中出现乱码的问题,这是Eclipse就会报错,当你打开报错的指定文件代码,里面凡出现中文的地方就会出现乱码,当我们查看文件的编码方式,它是utf-8,我们需要将它改成ANSI,如果项目中的类非常的多,一个个用记事本打开源文件,点击文件,另存为命令,“编码”改为ANSI,这样就会很繁琐,降低工作的效率。哈哈,说来也挺好笑的,没想到在写这个程序的过程中用到对文件的操作,调试时打开目标文件夹,该文件夹出现无限循环地创建子文件夹,直到创建Window所支持的最大的限度,想将其删除掉,但是删除不了。遇到这种问题,第一时间上Google搜索,答案不是令人很满意,想放在一边,先不管它,后来,想了想,既然用程序可以创建文件夹,删除文件夹也可以吧,想到这就去写了一个删除文件夹的java类。代码如下:

package com.treasure.test;

import java.io.File;

/**
 * 解决无限创建的子文件夹删除不了的问题
 * @author Treasure
 *
 */
public class ForeverDelete 
{
	//删除文件夹方法
	private void deleteDir(File file) 
	{
		if (file.listFiles().length == 0)
			file.getAbsoluteFile().delete();
	}
	//删除文件方法
	public void deleteFile(File file) 
	{
		File[] temp = file.listFiles();
		for (int i = 0; i < temp.length; i++) 
		{
			System.out.println(temp[i].getName());
			if (temp[i].isDirectory()) 
			{
				if (temp[i].listFiles().length != 0)
					this.deleteFile(temp[i]); //如果 文件夹里不为空 递归调用 方法
				    this.deleteDir(temp[i]);
			} 
			else 
			{
				temp[i].delete();
			}
		}
	}
	
	public static void main(String[] args) 
	{
		ForeverDelete m = new ForeverDelete();
		m.deleteFile(new File("H:\\tmp\\hello"));
	}
}

        注意:这个我自己测试过,绝对可行,运行该项目,如果没有将文件夹里的所有子文件夹删除,那么就多执行一行,我总共执行了两次,才将该文件夹中无限循环的子文件夹全部删除。

        总结:编程有好几年了,第一次遇到这种问题,呵呵,出现问题不可怕,关键在于自己想不想解决此问题。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值