目录的删除
方法
boolean delete()
与删除文件是同一个方法,如果File表示的是目录也可以被删除
删除目录时要求该目录必须是一个空目录,否则删除失败
例
package file;
import java.io.File;
/**
* 删除目录
*/
public class DeleteDirDemo {
public static void main(String[] args) {
//将当前项目目录下的demo目录删除
//File dir = new File("./demo");
File dir = new File("./a");//删除失败,因为a不是一个空目录
if(dir.exists()){
dir.delete();
System.out.println("该目录已删除");
}else{
System.out.println("该目录不存在");
}
}
}
访问目录内容
访问一个目录中的所有子项
方法
FIle[] listFiles()
获取当前File对象表示的目录中的所有子项。返回的数组中每个FIle对象表示该目录中的一个子项。
相关方法
boolean isFile()
判断当前File对象表达的是否为一个真实存在的文件
boolean isDirectory()
判断当前File对象表达的是否为一个真实存在的目录
例
package file;
import java.io.File;
/**
* 获取一个目录中的所有子项
*/
public class ListFilesDemo {
public static void main(String[] args) {
//将当前目录中的所有子项列出
//1创建File对象表示当前目录
File dir = new File(".");
if(dir.isDirectory()) {//存在且确实为一个目录
//2列出该目录中的所有子项
File[] subs = dir.listFiles();
System.out.println("一共有"+subs.length+"个子项");
//遍历数组,获取每一个子项
for(File sub : subs){
String name = sub.getName();//获取该File对象表示的文件或目录的名字
System.out.println(name);
}
}
}
}
练习
定义一个过滤器,获取当前目录下子项名字中含有字母"a"的所有子项
package file;
import java.io.File;
import java.io.FileFilter;
/**
* 定义一个过滤器,获取当前目录下子项名字中含有字母"a"的所有子项
*
* indexOf("a")是否>=0,因为当字符串不含有"a"时indexOf返回值为-1
*
* String提供了直接判断是否包含指定内容的方法
* boolean contains(String str)
* 当前字符串包含参数str表示的字符串内容时则返回true
*/
public class Test3 {
public static void main(String[] args) {
File dir = new File(".");
if(dir.isDirectory()){
// FileFilter filter = new FileFilter() {
// public boolean accept(File f) {
// return f.getName().contains("a");
// }
// };
// File[] subs = dir.listFiles(filter);
/*
FileFilter接口只有一个抽象方法
因此可以使用lambda表达式创建
*/
File[] subs = dir.listFiles(f->f.getName().contains("a"));
for(File sub : subs){
System.out.println(sub.getName());
}
}
}
}