File遍历目录

本文介绍了如何使用Java的File类进行目录遍历,包括列出指定目录及其子目录下的所有文件,通过exists()和isDirectory()判断文件或目录存在及类型,并使用递归遍历目录内容。详细展示了list()和listFiles()方法的应用,以及如何处理子目录的情况。

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

File的过滤,遍历等操作

列出指定目录下的(包括子目录)的所有文件

File file = new File();

exists() 方法用于判断文件或目录是否存在

isDirectory()方法判断File类的对象是否是目录

throw new IllegalArgumentException();抛出异常

String[] filenames = file.list() //返回的是字符串数组,列出当前目录下的所有子目录和文件,不包含子目录下的内容
//递归
for(String string : filenames){//将filenames数组中的值,循环赋值给string,直到filenames为空时,结束循环
System.out.println(string);
}

//如果要遍历目录下的内容就需要构造成File对象做递归操作,File提供了直接返回File对象的API
File[] files = file.listFiles(); //返回的是直接子目录(文件)的抽象

//递归,遍历出该目录下所有文件信息,包括子目录下的文件
for(File f :files){
if(f.isDirectory){
//递归遍历该目录下的子目录的信息
listDirectory(file);
}
else{
System.out.pritln(file);
}
}

贴出代码

public class FileUtils {
    //列出指定目录下,包括子目录下的所有文件
    public static void listDirectory(File dir)throws IOException{
        //如果目录不存在,抛出异常给提示
        if(!dir.exists()){
            throw new IllegalArgumentException("目录"+dir+"不存在");
            }
        //如果dir不是目录,抛出异常给提示
        if(!dir.isDirectory()){
            throw new IllegalArgumentException(dir+"不是目录");
        }

        String[]filename=dir.list();//返回的是字符串数组,子目录名称,不包含子目录下的内容
        for (String filedir : filename) {
            System.out.println(dir+"\\"+filedir);
        }



        //如果要遍历子目录下的内容,就需要遍历file对象做递归操作
        //file提供了直接返回file对象的api
        File[] file=dir.listFiles();//返回子目录(文件)的对象

        //如果子目录长度大于0并且不为空,就代表存在
        if(file.length>0&&file!=null){
            //遍历打印出子目录
        for (File file2 : file) {
            if(file2.isDirectory()){//拿到目录,false递归,
                //递归
                listDirectory(file2);

                }else{
                    System.out.println(file);
                }
        }
        }

    } 

}
public class FileDemo {
   public static void main(String[] args) {
      try {
        FileUtils.listDirectory(new File("/Users/ldq/Documents/Demotest"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值