您的位置:首页 > 编程语言 > Java开发

Java获取、删除文件和目录

2016-03-03 19:53 471 查看
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();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: