欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一个删除指定目录下所有文件及子目录的Java程序

程序员文章站 2022-05-15 08:46:23
...

今天在je上闲逛时,看到很多人分享的一个删除指定目录下所有文件及子目录的Java程序比较好,故copy过来存档于此,以便以后借用。

原帖地址:递归删除指定目录下所有文件及子目录

关于用Java实现删除指定目录下的所有文件的问题

1。一个删除指定目录下所有文件的程序,算法是用递归来实现的。

程序一:

/**
	 * 删除此路径名表示的文件或目录。
	 * 如果此路径名表示一个目录,则会先删除目录下的内容再将目录删除,所以该操作不是原子性的。
	 * 如果目录中还有目录,则会引发递归动作。
	 * @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();
	}

 程序二:

    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。调用本地操作系统的方法:

 /**
		 * 通过命令删除文件或文件夹(会删除文件夹里所有文件) 只能在windows上使用,如果
		 * 在Unix或linux上,则修改相应命令
		 * 
		 * @param _file
		 */
		 public static void deleteFileByWindowsCommand(File _file) {
			 Runtime rt = Runtime.getRuntime();   
			 String cmd = null;
			  try {   
				  if(_file.isFile()) {
					  cmd = "cmd.exe /c del /q/a/f/s "+_file.getAbsolutePath();
				  } else {
					  cmd = "cmd.exe /c rd /s/q "+_file.getAbsolutePath();
				  }
			      rt.exec(cmd);   
		      }catch(IOException e){   
			      e.printStackTrace();   
			  }   
			}