一、使用输出路径判断过滤
import java.io.File; public class demo_file04 { public static void main(String[] args) { fileall(new File("D:\\coding")); } private static void fileall(File f1) { // System.out.println(f1); //判断文件是否是目录 if (f1.isDirectory()) { // 获取文件列表继续遍历 File[] files = f1.listFiles(); for (File file : files) { // 递归遍历文件 fileall(file); } } else { // 输出文件目录 if(f1.toString().toLowerCase().endsWith(".jar")){System.out.println(f1);} } } }
一、使用文件过滤器匿名对象类
import java.io.File; import java.io.FileFilter; public class demo_file05 { public static void main(String[] args) { fileall(new File("D:\\coding")); } private static void fileall(File f1) { // System.out.println(f1); //判断文件是否是目录 if (f1.isDirectory()) { // 获取文件列表继续遍历 File[] files = f1.listFiles(new FileFilter() { @Override public boolean accept(File file) { if(file.isDirectory()){ return true; } return file.getName().toLowerCase().endsWith("java"); } }); for (File file : files) { // 递归遍历文件 fileall(file); } } else { // 输出文件目录 System.out.println(f1); } } }
三、使用lambda表达式使用过滤器
import java.io.File; import java.io.FileFilter; public class demo_file06 { public static void main(String[] args) { fileall(new File("D:\\coding")); } private static void fileall(File f1) { // System.out.println(f1); //判断文件是否是目录 if (f1.isDirectory()) { // 获取文件列表继续遍历 File[] files = f1.listFiles((File file)->{ if(file.isDirectory()){ return true; } return file.getName().toLowerCase().endsWith("java"); }); for (File file : files) { // 递归遍历文件 fileall(file); } } else { // 输出文件目录 System.out.println(f1); } } }
File[] files = f1.listFiles((File file)->{ if(file.isDirectory()){ return true; } return file.getName().toLowerCase().endsWith("java"); }); //等价 File[] files = f1.listFiles(file->file.isDirectory() || file.getName().toLowerCase().endsWith("java"));