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 所修饰。

posted on 2016-05-30 23:31  WesTward  阅读(5186)  评论(0编辑  收藏  举报