package javatest;

 import java.io.File;
import java.util.ArrayList;
import java.util.regex.Pattern; class FileUtils
{
public static void main(String[] args)
{
String dir = "C:\\Users\\hp\\Desktop\\test"; System.out.println("递归的获取该目录下的所有文件:");
for (File f : FileUtils.getFilesRecursive(dir))
{
System.out.println(f.getAbsolutePath());
} System.out.println("递归的获取该目录下的所有子目录:");
for (File f : FileUtils.getDirecotriesRecursive(dir))
{
System.out.println(f.getAbsolutePath());
} System.out.println("删除该目录下的所有.html文件");
removeFiles(dir,null);
System.out.println("Done.");
} /*******递归的获取某个目录下的所有文件******/
public static ArrayList<File> getFilesRecursive(String dir)
{
ArrayList<File> files = new ArrayList<File>(); File targetDir = new File(dir);
if (targetDir.exists())
{
for (File file : targetDir.listFiles())
{
if (file.isFile())
{
files.add(file);
}
else if (file.isDirectory())
{
files.addAll(getFilesRecursive(file.getAbsolutePath()));
}
}
} return files;
} /*******递归的获取某个目录下的所有子目录******/
public static ArrayList<File> getDirecotriesRecursive(String dir)
{
ArrayList<File> dirs = new ArrayList<File>(); File targetDir = new File(dir);
if (targetDir.exists())
{
for (File f : targetDir.listFiles())
{
if (f.isDirectory())
{
dirs.add(f);
dirs.addAll(getDirecotriesRecursive(f.getAbsolutePath()));
}
}
} return dirs;
} /*******删除某个目录下,文件名符合过滤条件的所有文件,然后删除空的子目录******/
public static void removeFiles(String targetDir, String fileRegex)
{
ArrayList<File> files = getFilesRecursive(targetDir);
//没有过滤条件,则删除该目录下的所有文件和子目录
if (fileRegex == null||fileRegex.equals("") )
{
//先删除所有文件.
for (File file : files)
{
file.delete();
}
//由内到外删除所有空目录.
ArrayList<File> dirs=getDirecotriesRecursive(targetDir);
for (int i=0;i< dirs.size();++i)
{
dirs.get(dirs.size()-1-i).delete();
}
}
else
{
//用正则表达式过滤文件名
Pattern pat = Pattern.compile(fileRegex);
for (File file : files)
{
if (pat.matcher(file.getAbsolutePath()).find())
file.delete();
}
}
}
}

Java获取、删除文件和目录的更多相关文章

  1. java递归删除文件及目录

    package base; import java.io.File; public class delete {     public static void main(String[] args) ...

  2. Java精选笔记_IO流【File(文件)类、遍历目录下的文件、删除文件及目录】

    File(文件)类 File类用于封装一个路径,该路径可以是从系统盘符开始的绝对路径,也可以是相对于当前目录而言的相对路径 File类内部封装的路径可以指向一个文件,也可以指向一个目录,在使用File ...

  3. Java中删除文件、删除目录及目录下所有文件(转)

    原文链接:Java中删除文件.删除目录及目录下所有文件 知识点:File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除,具体代码示例如下: ...

  4. HDFS的Java客户端操作代码(HDFS删除文件或目录)

    1.HDFS删除文件或目录 package Hdfs; import java.io.IOException; import java.net.URI; import org.apache.hadoo ...

  5. Java删除文件或目录及目录下所有文件

    一直在做C++相关开发的工作.突然某一天一时兴起,想学习下Java开发.然后再网上找到一本Java简明教程,入门是够用了.看到文件IO这一章,想起之前用C++做的删除文件或目录的练习,于是打算用Jav ...

  6. 【java工具类】删除文件及目录

    FileUtil.java /** * 删除文件及目录 * @param file; */ public static boolean delFile(File file) { if (!file.e ...

  7. java删除文件及其目录

    1.删除指定文件路径 public @ResponseBody String deleteFiles(HttpServletRequest request) { log.info(this.getCl ...

  8. 【改造Linux命令之rm - 删除文件或目录-】

    用途说明 rm命令是常用的命令,用来删除文件或目录(remove files or directories).它也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比 ...

  9. IOS中获取各个文件的目录路径的方法和NSFileManager类

    转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永 ...

  10. java获取classpath文件路径空格转变成了转义字符%20的问题

    java获取classpath文件路径空格转变成了转义字符%20的问题 这个问题很纠结,服务器的文件路径带有空格,空格被转化是%20了,悲剧就出现了 下面展示一段代码String path = get ...

随机推荐

  1. Javascript基础系列之(六)循环语句(while语句)

    循环语句的作用是反复的执行同一段代码,尽管分几种不同的类型,但其原理几乎相同:只要给定的条件满足,包含在循环体内的语句会不断执行,一旦条件不再满足则终止. while循环是前测试循环,这意味着是否终止 ...

  2. Mybatis出现:无效的列类型: 1111 错误

    在使用Mybatis时,不同的xml配置文件,有的会提示:无效的列类型: 1111 比如这个sql: update base.sys_person t set t.rybh=#{rybh},t.xm= ...

  3. poj3107 树形dp

    好久没更了.前段时间去ec-final,实力水一波,混了个铜,虽然很弱,但是可以算是对之前一段时间的回报吧. 现在每天忙着复习,逃课太多,啥都不会...不想挂科啊!!Orz... 题意(简化):警察想 ...

  4. Spring-dispatcherServlet

    对于分析SpringMVC,其实就是遵循Servlet世界里最简单的法则“init-service-destroy”. 对于分析SpringMVC的初始化流程,就是分析DispatcherServle ...

  5. poj 3070 矩阵快速幂模板

    题意:求fibonacci数列第n项 #include "iostream" #include "vector" #include "cstring& ...

  6. NOI2002 洛谷 P1196 银河英雄传说

    神奇的并查集问题 题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩 ...

  7. POJ1703Find them, Catch them

    Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37722   Accepted: ...

  8. nginx proxy超时报错 upstream timed out (110: Connec...

    环境介绍 服务器:centos6.4服务:nginx proxy 问题描述: 然后查找  /opt/usr/nginx/1.4.0/logs  错误 error.log日志提示如下 2015/01/0 ...

  9. 随时修改添加,thinkphp小知识

    __SELF__代表自身路径, 谁访问它代表是谁, 区别在于有没有传值.传值的话self会带那个值 __ACTION__ 找操作方法所在的位置,区别在于有没有传值.传值的话action不会带那个值 _ ...

  10. JS参考书籍

    参考书籍 初级读物:<JavaScript高级程序设计>:一本非常完整的经典入门书籍,被誉为JavaScript圣经之一,详解的非常详细,最新版第三版已经发布了,建议购买. 中级读物:&l ...