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. .Net MVC中访问PC网页时,自动切换到移动端对应页面

    随着移动端的流行,越来越的网站,除了提供PC网页之外,也提供了移动端的H5页面,手机在访问www.xxx.com的时候,能自动跳转到mobile.xxx.com.网上很多在实现时也能使用JS直接进行跳 ...

  2. Learn sed using these command on Linux(流线式编辑器——sed)

    是对文件中的每一行进行处理,不会对源文件进行修改 sed --version sed '11d' sed_file sed -n '/[Bb]erry/p' sed_file (由于设置了n,所以只打 ...

  3. TortoiseSVN客户端如何更改新的URL

    问题: 我们的服务器换了新的URL地址,这时候我们本地的SVN访问帐号和地址就要重新定义了. 解决步骤: 1:重新定义SVN的URL,右键(TortoiseSVN) → Relocate → 输入你新 ...

  4. USACO 3.2 butter 最短路

    堆优化dijkstra /* PROB:butter LANG:C++ */ #include <iostream> #include <cstdio> #include &l ...

  5. 运行 appium 自带实例报错:unresolved import:webdriver

    python demo 中from appium import webdriver报错unresolved import:webdriver 之所以会报这样的error是因为没有装clientclie ...

  6. UVA 1626 Brackets sequence(括号匹配 + 区间DP)

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105116#problem/E 题意:添加最少的括号,让每个括号都能匹配并输出 分析:dp ...

  7. POJ2485Highways(prime 水题)

    Highways Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26516   Accepted: 12136 Descri ...

  8. HTML 5 应用程序缓存

    使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. 什么是应用程序缓存(Application Cache)? HTML5 引入了应用程序缓存,这 ...

  9. TCP的那些事儿(下)

    TCP的那些事儿(下) 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇<TCP的那些事儿(上)> 上篇中,我们介绍了TCP的协议头.状态机.数据重传中的东西.但是TCP要解 ...

  10. mysql 外键(FOREIGN KEY)

    最近有开始做一个实验室管理系统,因为分了几个表进行存储·所以要维护表间的关联··研究了一下MySQL的外键. (1)只有InnoDB类型的表才可以使用外键,mysql默认是MyISAM,这种类型不支持 ...