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. Ibatis对日期的处理

    最近在项目中出现两种情况(因为项目比较早,经历各个版本的改动,所有设计不一致),第一种:数据库中某一字段为Date类型,对应的bean中的类型为java.util.Date,所有在对应的映射中会出现字 ...

  2. 全局唯一标识符(GUID)

    全局唯一标识符,简称GUID(发音为/ˈɡuːɪd/或/ˈɡwɪd/),是一种由算法生成的唯一标识,通常表示成32个16进制数字(0-9,A-F)组成的字符串,如:{21EC2020-3AEA-106 ...

  3. HYSBZ 1269文本编辑器 splay

    比较基本的操作. #include<map> #include<queue> #include<stack> #include<cmath> #incl ...

  4. 【Matplotlib】 刻度设置(2)

    Tick locating and formatting 该模块包括许多类以支持完整的刻度位置和格式的配置.尽管 locators 与主刻度或小刻度没有关系,他们经由 Axis 类使用来支持主刻度和小 ...

  5. CentOS下crontab执行java程序

    阿里云CentOS收不到邮件 在crontab里配置执行脚本,脚本用来执行java程序,死活不执行.单独执行脚本可以运行. 查看crontab的日志文件,/var/log/cron,发现没有收到cro ...

  6. Spring POST

    Spring POST+表单对象如果数据格式不正确,则页面直接报400.页面没有反应,烦啊

  7. 洛谷P1755 斐波那契的拆分

    题目背景 无 题目描述 已知任意一个正整数都可以拆分为若干个斐波纳契数,现在,让你求出n的拆分方法 输入输出格式 输入格式: 一个数t,表示有t组数据 接下来t行,每行一个数n(如题) 输出格式: t ...

  8. Type-Length-Value编码

    Within data communication protocols, optional information may be encoded as a type-length-value or T ...

  9. 编译java文件,出错:Failed to establish a connection with the target VM

    helloword程序,所有java学习人员人生第一个程序,哎妈,基础太差,出错 public class Helloword{ public Helloword() { public static ...

  10. 北航 编译实践 PL/0文法

    编译实践-PL\0编译系统实现 姓名:   专业: 计算机科学与技术 学院: 软件学院 提交时间: 2013年12月25日 北京航空航天大学·软件学院 编译实践-PL\0编译系统实现 实验要求 以个人 ...