java之io之File类的list()方法过滤目录的使用

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

转载于:https://www.cnblogs.com/westward/p/5544371.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值