加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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;
 }
}
 
 

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读