java删除文件(可以是目录)

话不多说,直接上代码
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

/**
 * 删除指定文件或目录。
 * @author wisdom
 *
 */
public class DeleteFile {
	/**
	 * 日志文件.
	 */
	private File logFile;
	/**
	 * 删除的文件数量.
	 */
	private int del_count;
	public DeleteFile(File logFile) {
		super();
		if (!logFile.exists()) {
			try {
				logFile.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		this.logFile = logFile;
		del_count = 0;
	}
	public File getLogFile() {
		return logFile;
	}
	public int getDel_count() {
		return del_count;
	}
	public static void main(String[] args) {
		Date start = new Date();
		DeleteFile df = new DeleteFile(new File(args[0]));
		if (df.delete(args[1])) {
			System.out.println("文件删除成功");
		} else {
			System.out.println("文件删除失败");
		}
		Date end = new Date();
		//用时
		System.out.println("time=" + (end.getTime() - start.getTime()));
		System.out.println("共删除" + df.getDel_count() + "个文件");
	}
	
	/**
	 * 删除主方法.
	 * @param file
	 * @return
	 */
public boolean delete(String filePath) {File file = new File(filePath);if (!file.exists()) {//文件不存在,直接退出return false;}if (file.isDirectory()) {//文件是目录return deleteDirectory(file);} else {return deleteFile(file);}}/** * 删除文件. * @param file * @return */private boolean deleteFile(File file) {if (!(file.exists() && file.isFile())) {
			//不存在或是目录文件,直接退出
return false;} else {try (FileWriter fw = new FileWriter(logFile, true);) {fw.write("\n删除文件------" + file.getAbsolutePath());} catch (IOException e) {e.printStackTrace();}del_count++;return file.delete();//就这句话管用,删就一句话}}/** * 删除目录. * @param file * @return */private boolean deleteDirectory(File file) {boolean flag = false;if (!(file.exists() && file.isDirectory())) {return flag;//不存在或不是目录文件,直接退出
} File[] files = file.listFiles();for (File f : files) {//遍历file目录下的子文件和目录if (f.isFile()) {flag = deleteFile(f.getAbsoluteFile());} else {flag = deleteDirectory(f.getAbsoluteFile());//递归删除方式}if (!flag) break;}try (FileWriter fw = new FileWriter(logFile, true);) {fw.write("\n删除目录------" + file.getAbsolutePath());} catch (IOException e) {e.printStackTrace();}del_count++;flag = file.delete();//删除目录下的所有文件后,即可删除该目录,否则删除失败return flag;}}

本来以为用这种方式删除电脑上的含有很多子文件的目录会快一点,然并卵。代码可以直接用,传两个参数即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值