IO流之文件2

本文探讨了在Java中如何遍历文件目录,包括getName与getPath的区别,获取所有文件目录的不同方法,以及使用isFile()、isDirectory()进行文件筛选的各种策略,如FilenameFilter接口的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、遍历所有目录

getName与getPath的区别
获得所有文件目录的两种方法

public static void listAll(String path) {
        File f = new File(path);
        //先判断是不是文件
        if (f.isFile()) {
            System.out.println(f.getPath());
        } else {
            System.out.println(f.getPath());
            File[] fileArray = f.listFiles();
            for (File itemFile : fileArray) {
                // 递归
                listAll(itemFile.getPath());
            }
        }
    }
    public static void listAll(String path){

        //直接listfile,推荐用这种
        File f=new File(path);
        File[] fArray=f.listFiles();
        for(File fitem:fArray){
            if(fitem.isDirectory()){
                System.out.println(fitem.getName());
                listAll(fitem.getPath());
            }else{
                System.out.println(fitem.getName());
            }
        }
    }

筛选文件的几种方法
1、isFile()和isDirectory()
1、自己判断
2、用接口implements 实现FilenameFilter()
3、用内部类
4、用匿名内部类

/**
     * 用FilenameFilter接口  推荐
     * @param path
     * @param suffix
     */
    public static void listJpg(String path,String suffix){
        File f = new File(path);
        if(f.isFile()){
            if(f.getName().endsWith(suffix)){
                System.out.println(f.getPath());
            }
            System.out.println(f.getName()+"只是一个文件");
        }else{
            File[] fileArray=f.listFiles(new MyFileFilter(suffix));
            for(File item:fileArray){
                System.out.println(item.getPath());
/*打印此目录下包含此后缀的所有文件
else{
            File[] fileArray=f.listFiles();
            for(File item:fileArray){
            if(item.getName().endsWith(suffix))
            System.out.println(item.getPath());
            listJpg(item.getPath(),suffix)
            }
        }
        */
    }

    //自己判断
    public static void listJpg2(String path,String suffix){
        File f = new File(path);
        if(f.isFile()){
            if(f.getName().endsWith(suffix)){
                System.out.println(f.getPath());
            }
            System.out.println(f.getName()+"只是一个文件");
        }else{
            File[] fileArray=f.listFiles();
            for(File item:fileArray){
                if(item.getName().endsWith(suffix)){
                System.out.println(item.getPath());
                }
            }
        }
    }

    //内部类
    public static void listJpg3(String path,String suffix){
        File f = new File(path);
        if(f.isFile()){
            if(f.getName().endsWith(suffix)){
                System.out.println(f.getPath());
            }
            System.out.println(f.getName()+"只是一个文件");
        }else{
            File[] fileArray=f.listFiles(new InnerFilter(suffix));
            for(File item:fileArray){
                System.out.println(item.getPath());
            }
        }
    }

    //匿名内部类
    public static void listJpg4(String path,final String suffix){
        File f = new File(path);
        if(f.isFile()){
            if(f.getName().endsWith(suffix)){
                System.out.println(f.getPath());
            }
            System.out.println(f.getName()+"只是一个文件");
        }else{
            File[] fileArray=f.listFiles(new FilenameFilter(){
                @Override
                public boolean accept(File dir, String name) {
                    if(name.endsWith(suffix)){
                        return true;
                    }
                    return false;
                }
            });//以上为匿名内部类
            for(File item:fileArray){
                System.out.println(item.getPath());
            }
        }
    }





    public static void main(String args[]) {
    listAll("E:\\超市");
//          listJpg4("E:\\fileDemo2",".jpg");

    }


    //内部类
    static class  InnerFilter implements FilenameFilter {
        private String suffer;
        public InnerFilter(String suffer){
            this.suffer=suffer;
        }
        @Override
        public boolean accept(File dir, String name) {
            if(name.endsWith(suffer)){
                return true;
            }
            return false;
        }

    }

}
import java.io.File;
import java.io.FilenameFilter;



//接口实现
public class FileFilter1 implements FilenameFilter{
private String suffer;


    public FileFilter1(String suffer){
        this.suffer=suffer;
    }


    @Override
    public boolean accept(File dir, String name) {
        // TODO Auto-generated method stub
        if(name.endsWith(suffer)){
            return(true);
        }
        return false;
    }






}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值