递归实现删除文件或目录和 测试类程序

 
  用递归方式来实现删除硬盘的文件或目录(空文件夹)

首先要找到递归的入口出口,这点很重要,成败在此,呵呵!

 

代码实现:

 

import java.io.File ;

class RecursionDeleteFileDemo //利用递归 删除 文件或目录 操作
{
	public static void deleteFiles(File file)
	{
		//递归出口
		//判断目前文件,如果是文件 或 是一个空的文件夹,则删除
		if(file.isFile() || file.list().length ==  0)
		{
		   file.delete() ;
		}
		else
		{
			File[] files = file.listFiles() ;
			for(File f : files)
			{
				//递归入口
				deleteFiles(f) ;
				f.delete() ;
			}

		}
	}
}

public class RecursionDeleteFile
{
	public static void main(String[] args)
	{
		File file = new File("E:/abc") ;

		RecursionDeleteFileDemo.deleteFiles (file) ;


	}
}


 

File[] files = file.listFiles() ;    

返回: 抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录

 

 

测试类程序:RecursionDeleteFileDemoTest.java

 

package com.junit3_8;

import java.io.File;
import java.io.IOException;

import junit.framework.Assert;
import junit.framework.TestCase;

public class RecursionDeleteFileDemoTest extends TestCase{
	
	//测试只有一个文件的目录
	public void testDeleteFiles()
	{
		
		File file = null ;
		try {
			
			file = new File("a.txt");
			file.createNewFile();
			RecursionDeleteFileDemo.deleteFiles(file);
			
			
		} catch (IOException e) {
			
		Assert.fail();
			
		}
		
		boolean result ;
		//exists()判断该文件或目录是否存在
		result = file.exists();//false
		Assert.assertFalse(result);
	}
	
	
	/**
	 * 测试生成多层目录,目录结构如下
	 * 
	 *      root
	 *       /\
	 *      /  \
	 * child1   child2
	 *      
	 */
	public void testDeleteFiles2()
	{
		File directory = null ;
		
		try {
			
			directory = new File("root");//构造一个子目录
			directory.mkdir();//建立一个新的根目录
			
			File file0 = new File(directory,"xx.txt");
			file0.createNewFile();
			
			//在root目录下生成两个子目录
			File file1 = new File(directory,"child1");
			File file2 = new File(directory,"child2");
			file1.mkdir();
			file2.mkdir();
			
			//分别在file3和file4目录下建一个文本文件
			File file3 = new File(file1,"a.txt");
			File file4 = new File(file2,"b.txt");
			file3.createNewFile();
			file4.createNewFile();
			
			RecursionDeleteFileDemo.deleteFiles(directory);
			
			
			
			
		}
		catch(Exception e)
		{
			Assert.fail();
		}
		
		Assert.assertNotNull(directory);
		String[] str = directory.list();
		Assert.assertEquals(0, str.length);
		directory.delete();//删除根目录
		
	}
	

}


 

 

 


 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值