IO/NIO — File递归

IO/NIO — File递归

File类在java.io`包下,可以在程序中操作文件和目录

File可以新建、删除、重名名文件和目录,但是不能访问文件内容,需要通过输入/输出流

一、File 相关方法

1、创建File对象
  • File(String c):以当前路径创建一个File对象
  • File(File p, String c):将File文件封装成File对象
2、File类的获取
  • getName():获取文件名
  • length():获取文件大小
  • getAbsoluteFile():获取绝对路径
  • getAbsoluteFile().getParent():获取上一级路径
  • getParent():获取相对路径的父路径
3、文件和文件夹的创建删除等
  • mkdir():创建指定目录
  • mkdirs():创建多层文件夹
  • createNewFile():创建一个新文件
  • delete():删除文件或目录
  • exists():判断文件或目录是否存在
  • isDirectory():判断是否为一个目录
  • isFile():判断是否为一个文件
4、文件目录遍历
  • list():返回一个字符串数组,每个字符串表示文件或者目录
  • listFiles():返回一个绝对路径名数组,表示目录中的文件

二、文件过滤器

当通过listFiles()方法,可以获取一个目录下所有的文件和文件夹,当想获得指定扩展名的文件时,可以通过文件过滤器

  • listFiles(FilenameFileter filter):返回符合过滤器要求的所有文件和文件夹
  • 使用:自定义过滤器继承 FilenameFileter 类,实现accept(File dir, String name)方法,该方法获得 File 的所有子目录或者文件

三、File 递归遍历实现

递归:在方法内能自己调自己

public class FileTest {
	public static void main(String[] args) {
         // 1.指定要打印的目录File对象
		File file = new File("D:\\test");
         // 2.获取指定目录以及子目录中的所有的txt文件
		getFileAll(file);
	}

	/** 获取指定目录以及子目录中的txt文件 */
	public static void getFileAll(File file) {
        // 通过自定义的文件过滤器获取符合要求数据
		File[] files = file.listFiles(MyFileFilter);
		for (File f : files) {
			//判断当前遍历到的是否为目录
			if(f.isDirectory()){
				// 是目录,继续遍历
				getFileAll(f);
			}else{
				// 是文件,打印
				System.out.println(f);
			}
		}
	}
    
	// 自定类继承FilenameFilter过滤器接口
	class MyFileFilter implements FilenameFilter{
		public boolean accept(File dir, String name) {
		return name.endsWith(".txt");
	}
}
上一篇:Echarts(一)


下一篇:NIO