我的学习之路_第九章_File类,递归
【File类】
所属包:java.io.File
介绍:文件和目录路径名的抽象表现形式.用来描述电脑中文件,文件夹,以及路径类.
常用的三个和File有关的单词: File(文件) Directory(文件夹,目录) path(路径)
File是一个与系统无关的类,在任何系统中都可以使用.
File类的3个重载的构造方法:
● File(String pathname) 传递路径名:可以写文件夹,也可以写一个文件
注意:路径存不存在都可以创建,路径不区分大小写.
● File(String parent , String child) 传递路径: 传递字符串类型父路径,字符串类型的子路径
好处:单独操作父路径和子路径,使用起来比较灵活,可以把路径单独作为参数传递过来.
● File(File parent, String chaid) 传递路径: 传递File类型父路径,字符串类型子路径
好处:父路径是File类型,父路径可以直接调用File类的方法.
路径的分类: 绝对路径:以盘符开始的路径 如c:\\a\\b\\c.txt
相对路径:相对于当前项目来说,路径编写的时候可以省略盘符到项目之间的路径.
★: 注意 : 路径不区分大小写
▲ File类的创建和删除功能:
File创建文件功能: 返回值:boolean createNewFile() 创建的文件路径和文件名,在File构造方法中给出.如果文件已经存在,不在创建,返回false,
只能创建文件,不能创建文件夹.创建文件夹的路径,必须存在
File创建文件夹功能: 返回值:boolean mkdirs() 可以创建单层文件夹,也可以创建多层文件夹.创建的路径也在File构造方法中给出,如果有不在创建.
File删除功能: 返回值:boolean delete() 删除文件或者文件夹,在File构造方法中给出.删除成功返回true,删除失败返回false(不存在,或文件夹中有内容)
删除方法不走回收站,直接从硬盘中删除.
▲ File类的判断功能:
返回值:boolean exists() 判断File构造方法中封装路径是否存在
返回值:boolean isDirectory() 判断File构造方法中封装的路径是不是文件夹
返回值:boolean isFile() 判断File构造方法中封装的路径是不是文件
▲ File类的获取功能:
返回值:File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式.
返回值:String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串.
返回值:String getName() 返回路径中表示的文件或者文件夹名(获取路径中最后部分的名字)
返回值:String getPath() 将此抽象路径名转换为一个路径名字符串(和toSting一样)
返回值:long length() 返回路径中表示的文件的字节数,文件夹没有大小(如果不存在返回0)
返回值:String getParent() 获取父路径,返回的是文件末尾的父路径.(返回String对象)
返回值:File getParentFile() 获取父路径,返回的是文件末尾的父路径.(返回File对象)
▲改名文件名操作: 返回值:boolean renameTo(File dest) 重新命名此抽象路径名表示的文件
◆ 遍历目录的方法:list 和 listFiles
★ 注意事项: 1、被遍历的路径只能是一个目录.
2、被遍历的目录必须存在.否则就会抛空指针异常
返回值:String[] list() 获取到File构造方法中封装的路径中的文件和文件夹名(遍历一个目录).返回的只有名字.
返回值:File[] listFiles() 获取到File构造方法中封装的路径中的文件和文件夹名(遍历一个目录),返回时的是目录或者文件的全路径.
返回值:File[] 静态方法 listRoots 获取系统中所有根目录.
【递归】
分类:递归分两种,直接递归和间接递归.(常用的是直接递归)
直接递归成为方法自身调用自己. 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法.
注意:
1:递归一定要有条件限定,保证递归能够停止下来,否则或发生栈内存溢出.
2:在递归中虽然有限定条件,但是递归次数不能太多.否则也会发生栈内存溢出.
3:构造方法,禁止递归.
【文件的过滤器】
在File类中listFiles()方法是遍历文件夹的方式,有两个listFiles重载的方法,参数传递的就是过滤器
●返回值:File[] listFiles(FileFilter filter) 返回抽象路径名,组成数组,这些路径名表示此抽象路径名表示的目录中返祖指定过滤器的文件和目录.
传递的参数 FileFilter 和 FilenameFilter 是接口,所以我们需要自己定义接口的是实现类,重写接口中的accept,实现过滤功能.
创建过滤器 FilenameFilter 接口的实现类对象 , 重写接口中的方法accept
返回值:boolean accept(File pathname) (推荐)
★:此方法可以过滤所有文件
实现过滤的方法: 1、把传递过来的路径pathname变成字符串 2、使用String类中的方法endsWith判断字符串是否以指定的字符串结尾.
注意:区分大小写,所以可以先把字符串全部大写或者小写,然后在判断.
●返回值:File[] listFiles(FilenameFilter filter) (不推荐) 返回抽象路径名,组成数组,这些路径名表示此抽象路径名表示的目录中返祖指定过滤器的文件和目录.
★:此方法只能过滤指定文件夹
返回值:boolean accept(File dir, String name)
参数: dir - 被找到的文件所在的目录. name - 文件的名称
【debug断点调试的快捷键和说明】
F6 - 一行一行执行
F5 - 进入到方法中
F7 - 结束目前所在的方法
F8 - 调到下一个断点
watch:捕获