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