Java 手册
listFiles
public File[] listFiles(FileFilter filter)
- 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。除了返回数组中的路径名必须满足过滤器外,此方法的行为与
listFiles()
方法相同。如果给定 filter
为 null
,则接受所有路径名。否则,当且仅当在路径名上调用过滤器的 FileFilter.accept(java.io.File)
方法返回 true
时,该路径名才满足过滤器。
- 参数:
filter
- 文件过滤器- 返回:
- 抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回
null
。 - 抛出:
SecurityException
- 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String)
方法拒绝对目录进行读访问- 从以下版本开始:
- 1.2
遍历并且删除指定文件夹里面的全部文件
import java.io.File;
public class FileExer3 {
public static void main(String[] args) {
File file = new File("E:\");
del(file);
}
public static void del(File file) {
//判断指定文件是否为空
//判断是不是目录,如果是,递归执行del()
if(file.isDirectory()) {
//获取目录下的所有子文件和子目录
File[] fs = file.listFiles();
for(File f : fs) {
//逐个判断每个子文件
del(f);
}
}
//判断是不是文件或者空目录,如果是,直接删除
file.delete();
}
}
查找指定文件夹里面以 .class 和 .java 结尾的文件
import java.io.File;
public class FileExer4 {
public static void main(String[] args) {
//创建一个file对象,将路径标记给file
File file = new File("D:\\workspace");
//调用方法
find(file);
System.out.println(javacount);
System.out.println(classcount);
}
static int javacount = 0;
static int classcount = 0;
public static void find(File file) {
//判断file对象是否为空
if(file == null)
throw new NullPointerException("亲!找不到路径啊!!!");
//判断是不是文件夹
if(file.isDirectory()) {
//用数组来获取这个目录下的子文件夹
File[] fs = file.listFiles();
for(File f : fs) {
//递归遍历所有子文件夹
find(f);
}
}
//如果是标准文件
//如果是class文件
else if(file.getName().endsWith("class")) {
classcount++;
}
//如果是java文件
else if(file.getName().endsWith("java")) {
javacount++;
}
}
}