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

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

阅读更多

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();
	}

相关推荐

    递归删除文件或子目录

    在这个场景中,"递归删除文件或子目录"指的是编写一个程序,它能够遍历并删除指定目录下的所有文件和子目录,包括它们的子孙目录,但会跳过那些被标记为只读属性的文件和目录。这个功能在清理或整理文件系统时非常...

    递归删除指定类型的文件夹,递归删除指定类型的文件

    本主题主要探讨如何实现“递归删除指定类型的文件夹”和“递归删除指定类型的文件”,以及如何在文件夹内部进行深度搜索和深度删除。 首先,我们需要理解递归的概念。递归是一种解决问题的方法,它将一个问题分解为...

    BAT批处理脚本-文件相关操作-删除指定路径下指定文件及文件夹外的所有文件及文件夹1.zip

    本压缩包文件“BAT批处理脚本-文件相关操作-删除指定路径下指定文件及文件夹外的所有文件及文件夹1.zip”包含了用于自动删除指定路径下非特定文件或文件夹的BAT脚本。以下是关于这个脚本和批处理技术的详细解释: *...

    一个递归删除指定目录和文件的例子

    在删除目录的场景中,如果一个目录包含其他子目录或文件,我们需要先删除子目录内的所有内容,然后才能删除子目录本身,这就是递归的典型应用。 在这个例子中,我们可能会有一个名为`DelDir`的函数,它接受一个路径...

    Qt删除一个目录下所有文件和文件夹

    在Qt编程中,删除一个目录下所有文件和文件夹是一个常见的任务,这通常涉及到文件系统操作。Qt提供了QDir类来处理与目录和文件相关的操作。以下是对这个知识点的详细说明: 首先,我们需要理解QDir类。QDir是Qt中的...

    BAT批处理脚本-文件相关操作-删除指定路径下指定文件及文件夹外的所有文件及文件夹2.zip

    3. `DEL /S /Q *.*`:递归地删除当前目录及其子目录下的所有文件,/S表示递归,/Q表示静默模式,不显示确认删除的提示。 4. `RMDIR /S /Q 目录名`:删除指定的目录及其所有子目录,/S表示递归,/Q表示静默模式。 5. ...

    递归删除指定文件例子

    在这个例子中,“dpdb.bat”很可能就是一个批处理脚本,用于删除指定目录下的pdb文件。让我们分析一下可能的脚本内容: ```batch @echo off setlocal enabledelayedexpansion for /r %%i in (*.pdb) do ( if exist...

    删除目录下所有文件的vb.net代码

    在VB.NET编程环境中,删除目录下所有文件及子目录是一项常见的任务,这通常涉及到文件系统对象的使用。本文将深入探讨如何使用VB.NET编写代码来实现这一功能。 首先,我们需要了解VB.NET中的`System.IO`命名空间,...

    批处理删除指定文件夹下的所有文件和文件夹

    ### 批处理删除指定文件夹下的所有文件和文件夹 #### 概述 在Windows操作系统中,批处理脚本是一种非常实用的工具,它能够帮助用户执行一系列预先定义好的命令,实现自动化操作。本文主要介绍如何通过批处理脚本来...

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

    // 首先获取当前目录下的所有子目录 string[] subFolders = GetDeleteFolderArray(path); // 如果有子目录,则递归删除 if (subFolders != null) { foreach (string subFolder in subFolders) { string ...

    (VS2010 C++)删除指定目录及其下所有的文件夹,文件

    接下来,我们将使用`FindFirstFile`、`FindNextFile`、`DeleteFile`和`RemoveDirectory`等函数来遍历并删除指定目录下的所有内容。 下面是一个简单的示例代码片段,演示了如何删除目录及其内容: ```cpp #include ...

    递归删除列表文件以外的所有文件源代码.rar

    在IT行业中,编程时常会遇到需要清理特定目录下文件的需求,比如保留指定列表中的文件而删除其他所有文件。这个场景通常使用递归方法来解决,因为递归允许我们逐级遍历目录结构并处理每个子目录。在这个"递归删除...

    java 删除指定目录下的文件

    但是,这个方法不能删除非空目录,因此,我们需要递归地删除目录下的所有文件和子目录。 ```java import java.io.File; public class FileDemo_05 { public static void main(String[] args) { String dirPath =...

    非递归删除非空目录(源代码)

    这段代码首先列出目录`Test`中的所有文件和子目录,然后逐个处理。对于每个子项,如果是文件则直接删除,如果是子目录则递归调用`RemoveNonEmptyDirectory`。所有子项处理完毕后,尝试删除`Test`目录自身。 这样的...

    用来删除目录和其下所有文件及子目录

    标题中提到的"用来删除目录和其下所有文件及子目录",这正是这类操作的典型应用场景。 在Windows操作系统中,有一个名为`deltree`的命令,它用于递归地删除指定的目录及其包含的所有内容。不过,`deltree`在较新的...

    java递归实现删除文件夹

    但如果目录非空,该方法将失败,除非递归删除所有子文件和子目录。 3. **递归删除实现** - 首先,我们需要检查给定的文件或目录是否存在。如果不存在,无需执行删除操作。 - 然后,使用`isDirectory()`方法判断...

    linux下为目录和文件设置权限,包括子目录的循环递归设置

    ### Linux 下为目录和文件设置权限,包括子目录的循环递归设置 #### 知识点一:Linux 文件权限概述 在 Linux 操作系统中,文件权限管理是至关重要的安全特性之一。通过权限管理,我们可以控制不同用户对文件或目录...

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

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

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

    以下是一个Python函数,名为`del_dir_tree`,用于递归删除指定的目录及其内容: ```python import os def del_dir_tree(path): ''' 递归删除目录及其子目录, 子文件 ''' # 检查路径是否为文件 if os.path.is...

    qt删除文件夹内所有内容

    要删除文件夹内的所有内容,我们需要遍历目录,获取所有文件和子目录,并逐个删除。 以下是一个简单的步骤概述: 1. **初始化QDir对象**:首先,创建一个`QDir`对象,指定要删除内容的文件夹路径。例如: ```cpp ...

Global site tag (gtag.js) - Google Analytics