前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FilenameFilter过滤文件名

FilenameFilter过滤文件名

作者头像
云海谷天
发布2022-08-09 14:31:20
6240
发布2022-08-09 14:31:20
举报
文章被收录于专栏:技术一点点成长

前言:

  文件IO是程序设计语言的一个特点,本文将针对Java的File文件名过滤进行测试。

测试目录截图:

测试结果:

代码语言:javascript
复制
data.txt
output-3.txt
output-4.txt
output-d.txt
people-id.txt
qqmusic_cn_seed.txt
text-a20.txt
--- finish ----

版本一:接口继承

代码语言:javascript
复制
package com.yeezhao.common.io.v1;

import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Pattern;

public class MyFilenameFilter implements FilenameFilter {
    final static String REGEX = ".*\\.txt";

    @Override
    public boolean accept(File dir, String name) {
        return Pattern.matches(REGEX, name);
    }

}
代码语言:javascript
复制
package com.yeezhao.common.io.v1;

import java.io.File;
import java.util.Arrays;

public class FilenameFilterV1 {
    public static void main(String[] args)  throws Exception{
        System.out.println("--- start ----");
        File file = new File("c://test");
        String[] list = file.list(new MyFilenameFilter());
        Arrays.sort(list, String.CASE_INSENSITIVE_ORDER); //忽略字符串大小写进行字典排序
        for(String l:list){
            System.out.println(l);
        }
        System.out.println("--- finish ----");
    }
}

版本二:内部类初始化内部对象属性

代码语言:javascript
复制
package com.yeezhao.common.io.v2;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

public class FilenameFilterV2 {
    private static String REGEX =".*\\.txt";
    private static FilenameFilter filter = new FilenameFilter() {

        @Override
        public boolean accept(File dir, String name) {
            return Pattern.matches(REGEX, name);
        }
    };

    public static void main(String[] args) throws Exception {
        File file = new File("c://test");
        String[] list = file.list(filter);
        Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);  //忽略字符串大小写进行字典排序
        for (String l : list) {
            System.out.println(l);
        }
        System.out.println("--- finish ----");

    }
}

版本三:内部类直接调用方法

代码语言:javascript
复制
package com.yeezhao.common.io.v3;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

public class FilenameFilterV3 {
    private static String REGEX =".*\\.txt";
    public static void main(String[] args) {
        File file = new File("c://test/");
        String[] list = file.list(new FilenameFilter() {
            
            @Override
            public boolean accept(File dir, String name) {
                return Pattern.matches(REGEX, name);
            }
        });
        Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);  //忽略字符串大小写进行字典排序
        for (String l : list) {
            System.out.println(l);
        }
        System.out.println("--- finish ----");
    }
}

附:File对象的list()方法 

后语:

Java.io涉及相当多的工具类,后续在研究之余希望能上手java.nio的一些内容并进行对比为是!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档