FilenameFilter過濾文件名


前言:

  文件IO是程序設計語言的一個特點,本文將針對Java的File文件名過濾進行測試。

測試目錄截圖:

測試結果:

data.txt
output-3.txt
output-4.txt
output-d.txt
people-id.txt
qqmusic_cn_seed.txt
text-a20.txt
--- finish ----

 


 

版本一:接口繼承

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

}

 

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

 

版本二:內部類初始化內部對象屬性

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 ----");

    }
}

 

版本三:內部類直接調用方法

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的一些內容並進行對比為是!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM