zoukankan      html  css  js  c++  java
  • Java IO 之 FileFilter与FilenameFilter

    FileFilter与FilenameFilter可以实现对文件的过滤,他们都是接口,具体的过滤规则需要我们自己编写

    1、FileFilter

     1 package org.zln.io.file;
     2 
     3 import java.io.File;
     4 import java.io.FileFilter;
     5 
     6 /**
     7  * 拓展名过滤器 只返回指定拓展名的文件
     8  * Created by coolkid on 2015/6/21 0021.
     9  */
    10 public class ExtensionFilter implements FileFilter{
    11 
    12     //拓展名
    13     private String extension;
    14 
    15     public ExtensionFilter(String extension) {
    16         this.extension = extension;
    17     }
    18 
    19     @Override
    20     public boolean accept(File file) {
    21         boolean result = false;
    22 
    23         if (file.isDirectory()){//目录 过滤掉
    24             result = false;
    25         }else {
    26             String fileName = file.getName();//文件名  不是全路径
    27             int index = fileName.lastIndexOf(".");
    28             if (index == -1){
    29                 result = false;
    30             }else if (index == fileName.length()-1){
    31                 result = false;
    32             }else {
    33                 if (this.extension.equalsIgnoreCase(fileName.substring(index+1))){
    34                     result = true;
    35                 }
    36             }
    37         }
    38         return result;
    39     }
    40 }
    E:GitHub oolsJavaEEDevelopLesson1_JavaSe_Demo1srcorgzlniofileExtensionFilter.java

    测试代码

    1         File file = new File("E:\GitHub\tools");
    2         File[] files = file.listFiles(new ExtensionFilter("bat"));
    3         for (File file1:files){
    4             System.out.println(file1.getAbsolutePath());
    5         }

    只有拓展名为 bat的文件才会被过滤出来,其他扩展名的文件以及文件夹不会被listFiles出来

    在此时的逻辑上,我们是根据拓展名来过滤的,当然,如果实际需要,我们也可以根据文件的其他属性进行过滤


    2、FilenameFilter

     1 package org.zln.io.file;
     2 
     3 import java.io.File;
     4 import java.io.FilenameFilter;
     5 
     6 /**
     7  * 图片过滤器
     8  * Created by coolkid on 2015/6/21 0021.
     9  */
    10 public class ImageFilter implements FilenameFilter {
    11 
    12     public boolean isGif(String filename){
    13         if (filename.toLowerCase().endsWith(".gif")){
    14             return true;
    15         }else {
    16             return false;
    17         }
    18     }
    19 
    20     public boolean isJpg(String filename){
    21         if (filename.toLowerCase().endsWith(".jpg")){
    22             return true;
    23         }else {
    24             return false;
    25         }
    26     }
    27 
    28     public boolean isPng(String filename){
    29         if (filename.toLowerCase().endsWith(".png")){
    30             return true;
    31         }else {
    32             return false;
    33         }
    34     }
    35 
    36 
    37     @Override
    38     public boolean accept(File dir, String name) {
    39         System.out.println("DIR:"+dir.getAbsolutePath());
    40         return isGif(name)||isJpg(name)||isPng(name);
    41     }
    42 }
    E:GitHub oolsJavaEEDevelopLesson1_JavaSe_Demo1srcorgzlniofileImageFilter.java

    通常使用 FilenameFilter 对文件进行过滤

  • 相关阅读:
    Uboot的串口下载文件命令:loads / loadb / loady
    U-Boot中关于TEXT_BASE,代码重定位,链接地址相关说明
    u-boot-2014.04分析
    Spring MVC + Java 多文件上传及多文件中转上传
    Java 文件上传中转
    backdrop-filter 和filter 写出高斯模糊效果 以及两者区别
    解读浮动闭合最佳方案:clearfix
    JavaScript ES6中export及export default的区别
    webpack配置常用loader加载器
    chrome jsonView插件安装
  • 原文地址:https://www.cnblogs.com/sherrykid/p/4592013.html
Copyright © 2011-2022 走看看