歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java利用FileFilter過濾文件

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

Copyright © Linux教程網 All Rights Reserved