Java I/O 输入输出流(三)—— 遍历目录

遍历目录

我们看一下File类复杂一点的使用,可以写一个工具类,File类的过滤操作:

FileUtils,java

//列出File的一些常用操作比如过滤,遍历等操作

public class FileUtils{
/*
 *列出指定目录下(包括其子目录)的所用文件
 */
    public satic void listDirectory(File dir)throws IOEception(
       if(!dir.exists()){
       //exists()方法用于判断文件或目录是否存在
       throe new IllegalArgnumentException("目录:"+dir+"不存在");
       }
       if(!dir.isDirectory())
       throw new IllegalArgnumentException(dir+"不是目录");
    }
      /*
       *列出他的子目录
       */
      String() filenames = dir.list()
      //返回的是字符串数组,直接子的名称不包含子目录的内容
      for(String string:filenames){
      System.out.println(dir+"\\"+string);
    //打印一下看看它返回的是什么
    }

list()方法用于列出当前目录下的子目录和文件
如果是遍历子目录下的内容就需要构造成File对象做递归操作,File提供了直接返回File对象API。


  File[] files = dir.listFiles();//返回的是直接子目录的抽象
   for (File file : files){
       System.out.println(file);
    }

if(files != null && files.length > 0){
  for(File file: files){
    if(file.isDirectory()){
     //递归
     listDirectory(file);
   }else(
     System.out.println(file)
    )
  }
 }
}
  }

这样它就会列出所有的内容,包括子目录下的内容。

下面再来写一个测试类

FileUtilTest.java

punlic class File(ltilTest){
   public ststic void main(String args) throws IOException{
      FileUtils.listDirctory(new File("E:\\exanple"));
  }
}

你可能感兴趣的:(Java I/O 输入输出流(三)—— 遍历目录)