java的io的知識中,File類必須掌握。File類是對文件或者文件夾的封裝。它本身並不能對所封裝的文件進行讀寫,它封裝的只是文件或文件夾的周邊知識,比如 大小啦,創建日期啦,路徑啦等等。
如果File封裝的文件夾,File類的list()方法可以將此文件夾下的所有文件夾和文件已字符串數組的形式返回。
list(FilenameFilter)可以對返回的字符串數組進行過濾,取自己想要的字符串。
?打印文件夾下的.java文件
實現1
package com.westward.io; import java.io.File; import java.io.FilenameFilter; import java.util.regex.Pattern; public class ListFileDemo { public static void main(String[] args) { File file= new File(".."); listFileJava(file); } public static void listFileJava(File file){ for (String string : file.list(new DirFilter(".*\\.java"))) { System.out.println(string); } } } class DirFilter implements FilenameFilter{ private Pattern pattern; public DirFilter(String regex) { // TODO Auto-generated constructor stub pattern= Pattern.compile(regex); } @Override public boolean accept(File dir, String name) { // TODO Auto-generated method stub return pattern.matcher(name).matches(); } }
實現2 匿名內部類的形式
package com.westward.io; import java.io.File; import java.io.FilenameFilter; import java.util.regex.Pattern; public class ListFileDemo2 { public static void main(String[] args) { File file= new File(".."); final String regex= ".*\\.java"; String[] files= file.list(new FilenameFilter() { private Pattern pattern= Pattern.compile(regex); @Override public boolean accept(File dir, String name) { return pattern.matcher(name).matches(); } }); for (String string : files) { System.out.println(string); } } }
output:
Demo.java
hha.java
ln.java
注意:
匿名內部類若 需要訪問外部方法的局部變量,那么局部變量必須被 final 所修飾。