File[] listFiles(FileFilter filter) 该方法需要传入一个过滤器,过滤器中定义了一个过滤条件,此时listFiles方法会利用该 过滤器将该目录中所有子项经过一遍过滤器,并最
public class LitsFilesDemo2 {
public static void main(String[] args) {
//获取当前目录下名字中含有字母"s"的所有子项
File dir = new File(".");//表示当前目录
if(dir.isDirectory()){
FileFilter filter = new FileFilter() {
/*
该方法的作用就是该过滤器的过滤条件,
将参数file对象想象为是一个将要经过该过滤器的元素。
方法返回值表达该元素是否满足过滤器要求。
*/
public boolean accept(File file) {
String name = file.getName();//获取该文件或目录的名字
// int index = name.indexOf("s");//正则表达式
// return index>=0;
//字符串支持boolean contains(String str),用于判断当前字符串是否包含参数指定的内容
return name.contains("s");//若有s就返回true
// String regex = ".*s.*";
}
};
//将过滤器插到listFiles方法中,将每个子项都经过一次过滤器并返回符合要求的。
File[] subs = dir.listFiles(filter);
System.out.println(subs.length);
for(int i=0;i
终返回符合过滤器要求的所有子项。
lambda表达式是JDK8之后推出的一个特性 可以用更精简的语法创建匿名内部类 语法: (参数列表)->{ 方法体 } lambda表达式不是所有匿名内部类都可以被替代,要求是实现的接口只能有一个抽象方法时 才能使用lambda表达式
public class LambdaDemo {
public static void main(String[] args) {
//定义文件过滤器 匿名内部类写法
FileFilter filter = new FileFilter() {
public boolean accept(File file) {
return file.isFile();
}
};
//lambda表达式是编译器认可的,编译成字节码文件时会被编译器改回成内部类创建
FileFilter filter1 = (File file)->{
return file.isFile();
};
//lambda表达式允许忽略参数类型
FileFilter filter2 = (file)->{
return file.isFile();
};
//lambda表达式如果方法体中只有一行代码,那么方法体的{}可以不写,如果这句代码含有return,那么return必须一同省略。
FileFilter filter3 = (f)->f.isFile();
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)