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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值