`
可怜狼
  • 浏览: 32523 次
  • 来自: 北京
社区版块
存档分类
最新评论

递归删除指定目录下所有文件及子目录

阅读更多

public class Main 
{
	
	    public static void main(String[] args)
	    {
	    	Main m = new Main();
	    	m.deleteFile(new File("e:\\test\\"));
	    }
	    
	    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();
	    	    	}
	    		}
	    }
	
	    private void deleteDir(File file)
	    {
	    	if(file.listFiles().length==0)
	    		file.getAbsoluteFile().delete();
	    }
}
 
分享到:
评论
5 楼 Agrael 2010-05-01  
云中苍月 写道
    public static boolean delete(File dir)
    {
        if (dir.isDirectory())
        {
            File[] listFiles = dir.listFiles();
            for (int i = 0; i < listFiles.length && delete(listFiles[i]); i++)
            {
            }
        }
        return dir.delete();
    }

这个更简洁额,不过貌似是否不容易读?
4 楼 Agrael 2010-05-01  
smartinvoke 写道
用栈吧,不要用递归,递归有可能outofmemory的

有文件路径的长度限制,一般不可能到溢出那层。。
3 楼 云中苍月 2010-04-30  
    public static boolean delete(File dir)
    {
        if (dir.isDirectory())
        {
            File[] listFiles = dir.listFiles();
            for (int i = 0; i < listFiles.length && delete(listFiles[i]); i++)
            {
            }
        }
        return dir.delete();
    }
2 楼 smartinvoke 2010-04-30  
用栈吧,不要用递归,递归有可能outofmemory的
1 楼 Agrael 2010-04-29  
发一个我写的相对直观点的。

/**
	 * 删除此路径名表示的文件或目录。
	 * 如果此路径名表示一个目录,则会先删除目录下的内容再将目录删除,所以该操作不是原子性的。
	 * 如果目录中还有目录,则会引发递归动作。
	 * @param filePath
	 *            要删除文件或目录的路径。
	 * @return 当且仅当成功删除文件或目录时,返回 true;否则返回 false。
	 */
	public static boolean deleteFile(String filePath) {
		File file = new File(filePath);
		return deleteFile(file);
	}
	
	private static boolean deleteFile(File file){
		File[] files = file.listFiles();
		for(File deleteFile : files){
			if(deleteFile.isDirectory()){
				//如果是文件夹,则递归删除下面的文件后再删除该文件夹
				if(!deleteFile(deleteFile)){
					//如果失败则返回
					return false;
				}
			} else {
				if(!deleteFile.delete()){
					//如果失败则返回
					return false;
				}
			}
		}
		return file.delete();
	}

相关推荐

    递归删除文件或子目录

    递归地删除指定目录下的文件或子目录,跳过属性为只读的文件或目录。开发语言:VC6.0。

    Windows使用bat批处理命令清除指定目录下的文件夹以及对应文件

    Windows清除指定目录下的文件夹以及对应文件,自动获取电脑用户名兼容Windows7、8、10,非常好用的工具。

    C#删除FTP文件夹(有子文件夹和子文件)的方法

    C#删除FTP文件夹(有子文件夹和子文件)的方法C#删除FTP文件夹(有子文件夹和子文件)的方法C#删除FTP文件夹(有子文件夹和子文件)的方法C#删除FTP文件夹(有子文件夹和子文件)的方法

    FileUploadUtil.java(文件上传工具类)

    删除文件夹,递归删除目录下的所有文件及子目录下所有文件,函数名:getFile 作用:使用递归,输出指定文件夹内的所有文件 参数:path:文件夹路径 前置空格缩进,显示文件层次结构,通过文件名称获取导入文件到temp...

    delphi 删除 指定目录 指定日期 之前所有文件

    大概思路是,递归进入各个子目录。如果是目录,则进去子目录。如果不是,则直接进行比较日期之后,进行删除操作。 其中提取到 这个文件的准确创建日期这一... 也没有多少技术,就是方便删除超大目录下相关文件罢了。

    c#文件操作基类(涵盖基本操作)

    获取指定文件夹下所有子目录及文件(树形); 获取指定文件夹下所有子目录及文件函数; 获取指定文件夹下所有子目录及文件(下拉框形); 获取指定文件夹下所有子目录及文件函数; 获取文件夹大小; 获取指定文件详细...

    python递归删除指定目录及其所有内容的方法

    ''' 递归删除目录及其子目录, 子文件''' if os.path.isfile&#40;path&#41;: try: os.remove(path) except Exception, e: #pass print e elif os.path.isdir(path): for item in os.listdir(path): item...

    Node.JS循环删除非空文件夹及子目录下的所有文件

    主要介绍了Node.JS循环删除非空文件夹及子目录下的所有文件及node.js递归删除非空文件夹的实例代码,需要的朋友可以参考下

    linux复制、删除、移动文件的命令:cp、rm、mv.docx

    * -r:递归地删除指定目录及其下属的各级子目录和相应的文件。 mv 命令 mv 命令是 Linux 中用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中的命令。source 表示源文件或目录,target 表示目标...

    xshell常用命令.docx

    cp -a docs docs.bak 递归性地把当前目录下的docs目录复制为新目录docs.bak,保持文件属性,并复制所有的文件,包括以句点开头的隐藏文件。为了方便起见,-a选项包含-R选项 cp -i 在覆盖前询问用户 cp -v 告诉用户...

    Python shutil拷贝文件模块.docx

    6.shutil.copy2(文件1,文件2):拷贝了文件...8.shutil.rmtree(目标目录):可以递归删除目录下的目录及文件。 9.shutil.move(源文件,指定路径):递归移动一个文件。 10.shutil.make_archive():可以压缩,打包文件。

    简单,精巧,实用的按类型删除文件的工具软件

    按文件类型删除指定文件夹及其全部各级子目录内文档的工具软件; 程序员或非程序员每天需处理大量的文件,其中有很多实际上不需要长期保存或每天备份的垃圾级别的文件,因而需要一个工具能够按类别一次性删除这些...

    Linux目录创建与删除命令.docx

    * -a 选项:显示指定目录下所有子目录和文件,包括隐藏文件。 * -A 选项:显示指定目录下所有子目录和文件,包括隐藏文件。但不列出".'和 "..'。 * -b 选项:对文件名中的不可显示字符用八进制逃逸字符显示。 * -c ...

    电脑删除不了文件怎么办.docx

    * /R:递归:指示工具运行于指定的目录和子目录里的文件上。 * /D prompt:当前用户在一个目录里没有列出文件夹权限时,使用默认答案。 Cacls 是一个命令行工具,用于显示或者修改文件的访问控制列表。Cacls 的参数...

    删除文件或文件夹时出错怎么办?.docx

    * /T 更改当前目录及其所有子目录中指定文件的 ACL. * /L 对照目标处理符号链接本身 * /M 更改装载到目录的卷的 ACL * /S 显示 DACL 的 SDDL 字符串。 * /S:SDDL 使用在 SDDL 字符串中指定的 ACL 替换 ACL (/E、/G、...

    Linux常用命令大全.pdf

    可以通过选项来指定是否递归删除目录及其内容。 mkdir命令:用于创建新的目录。可以指定要创建的目录的路径和名称。 rmdir命令:用于删除空的目录。如果目录不为空,需要先删除其中的文件或子目录。

    Linux基本命令的使用

    • rm -r 递归删除,可删除子目录及文件 • rm -f 强制删除 • diff 比较两文件不同 • tar命令:(tar:打包压缩) • dmesg命令显示系统诊断信息、操作系统版本号、物理内存大小以及其他信息 • df命令查看文件系统...

    Linux文件的复制、删除和移动命令使用说明.docx

    * -r:递归删除目录和子目录 示例: * 删除文件:rm file1.txt * 删除目录:rm -r scripts * 强制删除文件:rm -f file1.txt 熟悉 Linux 文件的复制、删除和移动命令可以提高工作效率和生产力。

    rmdir命令 删除空目录

    rmdir命令的“-p”参数可以递归删除指定的多级目录,但是要求每个目录也必须是空目录。 语法格式 : rmdir [参数] [目录名称] 常用参数: -p 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错 —...

    linux中rmdir命令使用详解.docx

    * -p 递归删除目录 dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。 * -v, --verbose 显示指令执行过程 实例一:...

Global site tag (gtag.js) - Google Analytics