一、File类
1.File类概述
java.in.File是文件和目录名的抽象表示,主要用于文件和目录的创建、查找和删除等操作
2.File类的方法
1)File类把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作
*创建一个文件/文件夹
*删除文件/文件夹
*获取文件/文件夹
*判断文件/文件夹是否存在
*对文件夹进行遍历
*获取文件的大小
2)静态成员变量
*pathSepartor:与系统有关的路径分隔符(windows系统是";",linux系统是":")
*separator:与系统有关的文件名称分隔符(windows系统是"\",linus系统是"/");
*操作路径写法:
C:\develop\a.txt (windows系统)
C:/develop/a.txt(linus系统)
java写法:"C:" + File.Seperator + "develop" +File.Seperator + "a.txt";
*路径:
绝对路径:是一个完整的路径,以盘符(C:\D:)开始的路径
相对路径:是一个简化的路径,是相对于当前项目的根目录
*注意:
路径是不区分大小写的
路径中的文件名称分隔符,在windows使用反斜杠,反斜杠是转义字符,两个\\等于一个真正的\
3)File类的构造方法
*File(String pathname)
路径可以是以文件结尾,也可以是以文件夹结尾
路径可以是相对路径,也可以是绝对路径
路径可以存在,也可以不存在(创建File对象只是把字符串的路径封装为File对象,不考虑路径的真假情况)
*File(String parent,String child)
把路径分为两个部分,使用灵活
*File(File parent,String child)
父路径是File类型,可以使用File类的方法,对路径进行一些操作
4)File类获取功能的方法
*public String getAbsolutPath():返回File的绝对路径名字符串
*public String getPath():将此File转换为路径名字符串(不管是绝对还是相对路径)
*public String getName():返回由此File表示的文件或目录名称(结尾部分)
*public long length():返回由此File表示的文件的大小(注意不是长度)
**注意:大小以字节为单位
不能以文件夹结尾
如果文件路径为假,返回0
5)File类判断功能的方法
*public boolean exists():判断此File表示的文件或目录是否实际存在
*public boolean isDirectory():判断此File表示的是否为目录
*public boolean isFile():判断此File表示的是否为文件
6)File类创建删除功能的方法
*public boolean creatNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件.
*public boolean delete():删除由此File表示的文件或目录
*public boolean mkdir():创建由此File表示的目录
*public boolean mkdirs():创建由此File表示的目录,包括任何必须但不存在的父目录
7)目录的遍历
*public String[] list():返回一个String数组,表示该File目录中的所有子文件或目录
*public File[] listFiles():返回值是一个File数组,表示该File目录中的所有子文件或目录
注意:
list方法和listFile方法遍历的是构造方法中给出的目录
如果路径不存在,会抛出空指针异常
如果构造方法中给出的路径不是一个目录,也会抛出空指针异常
3.FileFilter文件过滤器
1)listFiles有两个重载的方法:
*public File[] listFiles(FileFilter fileFilter)
FileFilter:用于抽象路径名的过滤器
作用:用来过滤文件(File对象)
抽象方法:boolean accept(File pathname)
测试指定抽象路径名是否应该包含在某个路径名列表中
参数:File dir:构造方法中传递的被遍历的目录
File path:使用ListFile方法遍历目录,得到每一个文件对象
*public File[] listFiles(FilenameFilter filenameFilter)
FilenameFilter:用于过滤文件名的过滤器
作用:用来过滤文件名称
抽象方法:boolean accept(File dir,String name)
测试指定文件是否应该包含在某个路径名列表中
参数:File dir:构造方法中传递的被遍历的目录
String name:使用ListFile方法遍历目录,获取每一个文件/文件夹的名称
*注意:两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤的方法accept,在方法中自己定义实现规则
2)FileFilter
*过滤器中的accept方法是谁调用的
*accept方法的参数pathname是什么?
listFiles方法会对构造方法中参数传递的目录进行遍历,根据目录中的每一个文件/文件夹封装为file对象
listFiles方法会调用参数传递的过滤器中的方法accept
listFiles方法会把遍历得到的每一个File对象,传递给accept方法的参数pathname
如果返回值为true就把封装的File对象返回到数组中
二、递归
1.递归的分类:
1)直接递归:方法直接调用自己
2)间接递归:A方法调用B方法,B方法调用C方法,C方法调用A方法
3)注意事项:
*递归一定要有条件限定,保证递归能够停止,否则会发生栈内存溢出
*递归中虽然有限定条件,但递归的次数不能太多,否则也会发生占内存溢出
*构造方法禁止递归
2.递归的使用前提:
当调用方法的时候,方法的主体不变,每次调用方法的参数不同
3.使用递归必须明确的问题
*递归的结束条件
*递归的目的
|
|