JUnit 3.8 演示递归删除文件目录的 测试类程序 .
用递归方式来实现删除硬盘的文件或目录(空文件夹)
首先要找到递归的入口及出口,这点很重要,成败在此,呵呵!
代码实现:
- 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();//删除根目录
- }
- }
JUnit 3.8 演示递归删除文件目录的 测试类程序 .的更多相关文章
- myBatis执行测试批量删除,出现测试类正常显示,但数据库数据没变
一般在测试myBatis运行正常,但数据库数据不变时,有可能是SQL语句有问题,检查SQL语句没问题,但数据库依然没变,就说明myBatis方法执行后并未提交到数据库,可尝试在测试类添加 sess ...
- Java递归删除文件目录的方法
public static void delDir(String path){ File dir=new File(path); if(dir.exists()){ File[] tmp=dir.li ...
- java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数
File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...
- python dict clear只能删除一层,不能够递归删除。
void PyDict_Clear(PyObject *op) { dictobject *mp; dictentry *ep, *table; int table_is_malloced; Py_s ...
- 【File】递归删除文件夹中子级文件/夹,并删除文件夹
今天有这样一个需求,需要删除某一个文件夹,但是文件夹中还有子级的文件 或者还可能会有文件夹在里面,所以就需要使用一个简单的递归才能将文件夹删除成功,包括文件夹中的子级文件/夹.!!! 其实很简单,就一 ...
- php 递归创建目录、递归删除非空目录、迭代创建目录
递归创建目录 方法一 function mk_dir($path){ if(is_dir($path)){ //参数本身是一个目录 return true; } if(is_dir(dirname($ ...
- Linux递归删除文件命令
Linux递归删除文件命令 find . -name "*.log.*" -exec ls {} \; find . -name "*.log.*" -exec ...
- linux系统下,递归删除.svn文件
linux系统下,递归删除.svn文件 SVNLinux 进入要删除的目录,执行下面的命令就可以啦. find . -name "*.svn" | xargs rm -rf
- SVN莫名出错,网上找遍无果,递归删除当前目录下所有.svn文件名
哎,太深刻的教训. 原来以前其它目录里有.SVN目录 ,而此SVN目录COPY到真正的SVN工作目录之后,会将有用的.SVN目录覆盖. 那么一样,显然,CI,UPDATE,CO之间的命令全部异常... ...
随机推荐
- 【计算几何】【二分图判定】Gym - 101485C - Cleaning Pipes
题意:有n个水井,每个水井发出一些管线(都是线段),然后每条管线上最多只有一个水井.所有从不同的水井发出的管线的相交点都是清洁点(不存在清洁点是大于两条管线点的交点).你需要在某些管线上放出一些机器人 ...
- 1 Spring4 之环境搭建和HelloWorld
1 Spring 是什么? 具体描述 Spring: 轻量级:Spring 是非侵入性的- 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API 依赖注入(DI --- dep ...
- bzoj1036 count 树链剖分或LCT
这道题很久以前用树链剖分写的,最近在学LCT ,就用LCT再写了一遍,也有一些收获. 因为这道题点权可以是负数,所以在update时就要注意一下,因为平时我的0节点表示空,它的点权为0,这样可以处理点 ...
- c语言把mysql数据库语句和变量封装为一个语句
我有一个语句 sql = "insert into talbe_name values(name,age)" 其中name和age两个变量根据外面的输入来确定,有两种方法 1: ...
- C#中&和&&,|和||区别
当两者都为逻辑运算符时. 其实没什么差别. &&和||当已经确定结果时,不会对第二个操作数求值.也不知道什么情况会用到这个差别.做个笔记好了. http://blog.csdn.net ...
- Android 基于蓝牙的方向控制器
最近开发了一个蓝牙控制器App,用手机远程控制小球的运动. 包含了一些基础知识:多线程使用,页面UI数据更新,按钮事件,选择项功能,蓝牙功能(蓝牙打开,蓝牙搜索,蓝牙连接,蓝牙命令发送,蓝牙命令接收) ...
- C# winform 禁止窗体移动
#region 禁止窗体移动 public const int WM_SYSCOMMAND = 0x112; public const int SC_MOVE = 0xF012; protected ...
- CentOS 6.9/7通过yum安装指定版本的Node.js
说明:通过yum好处其实很多,环境变量不用配置,配置文件放在大家都熟悉的地方,通过rpm -ql xxx可以知道全部文件的地方等等. Node.js(8.x) 一.安装和配置 1.安装Node.js ...
- Retrieving ST-Link/V2 Firmware from Update Utility
http://www.taylorkillian.com/2013/01/retrieving-st-linkv2-firmware-from.html http://forum.easyelectr ...
- Android开发中适配多种 ROM 的快捷方式是如何实现的?
在安卓开发中,要提高开发效率,掌握一些快捷方式是必不可少的,特别是对于android入门阶段的童鞋而言,非常重要.今天小编在安卓开发教程网站上,搜罗了一些常用的Android 适配多种 ROM 的快捷 ...