File类:用来将文件或文件夹封装成对象,方便对文件与文件夹的属性进行操作,File对象可以作为参数传递给流的构造函数。
·获取方法:
·getName():获取文件名
·getAbsolutePath():获取文件的绝对路径
·getPath():获取文件的相对路径
·length():返回此抽象路径名表示的文件的长度,如果此路径名表示目录,则返回值未指定。
·lastModified():返回此抽象路径名表示的文件的上一次更改时间。此时间要包装成Date类对象才能按正常的时间显示。
·list():获取当前目录下的文件以及文件夹,包括隐藏文件
·过滤器:endWith(),带参,参数是过滤条件
·isHidden():显示隐藏文件
·创建与删除方法:
·File():带参,创建文件
·mkdir():创建文件夹
·creatNewFile():创建文件,若文件已存在则创建失败
·delete():删除文件
·判断
·exists():文件是否存在
·isFile():是否是文件
·isDirectory():是否是文件夹
·重命名:
·renameTo():带参,参数为新名
简单使用1:实现对某文件夹的深度遍历,以树形打印在控制台
public class DeepSearch {
public static void main(String[] args) {
File dir = new File("g:\\demo");
listAll(dir, 0);
}
private static void listAll(File dir, int level) {
System.out.println(getSpace(level) + dir.getName());
//获取指定目录下当前的所有文件夹或者文件对象
level++;
File[] files = dir.listFiles();
for (int x = 0; x < files.length; x++) {
if (files[x].isDirectory()) {
listAll(files[x], level);
} else {
System.out.println(getSpace(level) + files[x].getName());
}
}
}
private static String getSpace(int level) {
StringBuilder sb = new StringBuilder();
sb.append("|--");
for (int x = 0; x < level; x++) {
sb.insert(0, "| ");
}
return sb.toString();
}
}
简单使用2:在某文件夹中找出.java结尾的文件,打印在控制台
/**
* 过滤器
*/
class SuffixFilter implements FilenameFilter {
private String suffix;
public SuffixFilter(String suffix) {
super();
this.suffix = suffix;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith(suffix);
}
}
public class DeepSearch {
public static void main(String[] args) {
File dir = new File("g:\\demo");
String filter = ".java";
listAllFiles(dir, filter);
}
private static void listAllFiles(File dir, String filter) {
if (dir == null || !dir.exists()) {
return;
}
if (dir.isFile()) {
System.out.println(dir.getName());
return;
}
for (File file : Objects.requireNonNull(dir.listFiles(new SuffixFilter(filter)))) {
listAllFiles(file, filter);
}
}
}