Java借助FileFilter过滤文件
发布时间:2021-11-22 09:40:47 所属栏目:PHP教程 来源:互联网
导读:Java利用FileFilter过滤文件 package cn.com; import java.io.File; import java.io.FileFilter; import java.util.ArrayList; import java.util.List; //问题描述:统计某个文件夹下,满足条件的文件个数 //1 利用FileFilter过滤出满足条件的文件 //2 if (fil
Java利用FileFilter过滤文件 package cn.com; import java.io.File; import java.io.FileFilter; import java.util.ArrayList; import java.util.List; //问题描述:统计某个文件夹下,满足条件的文件个数 //1 利用FileFilter过滤出满足条件的文件 //2 if (file.isDirectory()|| (file.isFile() && file.getName().contains(keyword))) // 当该文件是目录或者该文件名包含关键字则返回true // 2.1文件名包含关键字当然是结果之一 // 2.2如果是目录,则需要再后面递归调用该方法. //3 注意递归的使用 public class FileTest { static int filesCount = 0; static int foldersCount = 0; List<File> filesArrayList = new ArrayList<File>(); public static void main(String[] args) { FileTest fileTest=new FileTest(); File folder = new File("F:te"); String keyword = "test"; File[] filesResult= fileTest.getFiles(folder, keyword); System.out.println("在此目录下一共有目录:"+foldersCount+"个"); System.out.println("在此目录下一共有文件:"+filesCount+"个"); System.out.println("满足条件的文件共计:"+filesResult.length+"个"); } public File[] getFiles(File folder, final String keyword){ //1 得到目录和满足条件的文件 File[] filterFiles = folder.listFiles(new FileFilter() { @Override public boolean accept(File file) { if (file.isFile()) { filesCount++; } if (file.isDirectory()) { foldersCount++; } if (file.isDirectory()|| (file.isFile() && file.getName().contains(keyword))) { return true; } else { return false; } } }); //2 将1结果中的文件直接添加到集合且用目录进行迭代 for (int i = 0; i < filterFiles.length; i++) { if (filterFiles[i].isFile()) { filesArrayList.add(filterFiles[i]); } if (filterFiles[i].isDirectory()) { getFiles(filterFiles[i],keyword); } } //3 返回结果 File finalFiles[] = new File[filesArrayList.size()]; filesArrayList.toArray(finalFiles); return finalFiles; } } ![]() (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |