• 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 对文件进行过滤

  • 相关阅读:
    CRM 常用SQL 脚本
    Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧
    Winform Treeview 排序及图标处理
    Dynamic CRM 2013学习笔记(十六)用JS控制Tab可见,可用
    sql server 小技巧(3) SQL Server 2012 数据库完整导出到SQL Azure (包括数据)
    解决iOS Xcode 模拟器键盘不弹出
    iOS核心动画
    PS中怎么给图层解锁
    Cocos2d-x设置吞没单击属性来避免精灵重叠被点击后的事件续传
    解决Cocos2d-x编译错误: 无法打开 源 文件 "extensions/ExtensionExport.h"
  • 原文地址:https://www.cnblogs.com/sherrykid/p/4592013.html
Copyright © 2020-2023  润新知