java 删除目录

由于项目需要,要定时的把文件和目录删掉,以前很少做文件删除,都是去创建文件和读取文件,就找到了java的api文档去看有没有删除的方法,找到File类,java的File没有目录与文件的区分,都用File类表示,找到了一个方法。
 File.delete(); 

可怎么测试就是删除不了,文件加依然存在,郁闷了,没办法就硬着去读file.delete()方法的说明文档
Deletes the file or directory denoted by this abstract pathname. If this pathname denotes a directory, then the directory must be empty in order to be deleted.
大意就是删除一个File类代表的文件或目录,如果是目录,这个目录必须为空。
原来是这样,要删除目录,必须先删除子目录。就自己参考着别人的写了个删除的方法,给遇到同样问题的一个参考。代码如下
  package com.own;

import java.io.File;


public class FileUtil {
  
	
	/**
	 * 把整个目录(包括子目录)从硬盘中删除掉
	 * @param parent  目录
	 * @return
	 */
	public static  boolean removeDiectory(File parent){
		boolean isSuccess = false;
		if(parent == null){
			throw new IllegalArgumentException("目录为空");
		}
		
		if(parent.isFile()){
			throw new IllegalArgumentException("参数必须是文件");
		}
		
	    //列出子文件(只包括子文件不包括子文件的子文件)	
		File[] childFiles = parent.listFiles();
		for(File file : childFiles){
    		//如果是目录递归的调用
			if(file.isDirectory()){ 
    			isSuccess = removeDiectory(file);
    		}else{
    			isSuccess = file.delete();
    		}
		}
		//删除顶级目录
		isSuccess = parent.delete();
		return isSuccess;
	}
	
	
	
}
   


测试代码
   public class FileUtilTest {

	
	private  File parent;
	
	@Before
	public void setUp() throws IOException{
		parent = new File("d:/aa");
		parent.mkdir();
		File subfile = new File(parent,"bb");
		subfile.mkdir();
		subfile = new File(subfile,"test.txt");
		subfile = new File(parent,"cc/dd");
		subfile.mkdirs();
		subfile.createNewFile();
		subfile = new File(subfile,"bb.txt");
		subfile.createNewFile();
	}
	
	
	@Test
	public void testRemoveDiectory() {
	       boolean actual =  FileUtil.removeDiectory(parent);	
	       Assert.assertEquals(true,actual);
	}

	 

你可能感兴趣的:(java)