File类: 描述程序当中操作的文件和目录 * D:\aaa\bbb.txt;F:\\bbb\ccc.txt * jdk;tomcat;mysql * D:\\develop\\Java\\jdk1.8.0_191 * D:/develop/Java/jdk1.8.0_191 * 属性: * 1. static String pathSeparator 路径分隔符 等价于在字符串书写的;/: * 2. static String separator 目录分隔符 等价于在字符串书写的\\效果 * 备注: * 分隔符: 1.如果使用的是反斜杠,那么需要使用两个"\\"来进行目录区分 * 如果使用的是正斜杠,那么只需要使用一个"/"即可连接 * 2. 对于不同的操作系统,路径分隔符一般不一样,Windows系统当中使用的是;作为分割,Linux系统当中使用的是:作为分割 * 构造方法: * 1. File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。 * 2. File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。 * 3. File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。 * 路径: * 相对路径: 相对于它所在的项目路径 * 绝对路径: 以盘符(根目录)为开头的路径为绝对路径 * 项目的根路径:文件直接放到项目目录下 * File类的常用API方法 * 1. getAbsolutePath() 获取file对象的绝对路径 * 2. getName() 获取file对象的文件名称或者是目录名称 * 3. getParent() 获取file文件的父路径 不包含文件本身的一个路径 * 4. length() 获取文件的大小 * 5. getPath() 返回值是变化的 * 6. boolean isFile() 测试此抽象路径名表示的文件是否为普通文件。 * 7. exists() 判断该文件在硬盘当中是否存在 * 8. boolean isDirectory() 判断该file实例是不是一个目录 * 9. boolean createNewFile() 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。 * 10. boolean mkdir() 创建由此抽象路径名命名的目录。 * 11. boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。 * 12. boolean delete() 删除由此抽象路径名表示的文件或目录 * 13. String[] list() 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。 * 14. File[] listFiles() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。 * 15. File[] listFiles(FileFiler filer) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。 * 备注: * 1.getPath()方法 如果程序获取该文件是通过绝对路径获取的,那么该方法的返回值是一个绝对路径 * 如果程序获取该文件是通过相对路径获取的,那么该方法的返回值就是一个相对路径 * 2.File类当中的方法 只能识别project工程类型 不能直接识别module工程类型 * 3.createNewFile() 要求创建文件的路径在硬盘当中是真实存在的(不能出现空目录),否则就会抛出一个异常 * java.io.IOException: 系统找不到指定的路径。 * 4. delete() 它可以删除文件或者文件夹,当删除文件夹时,必须保证该文件夹下没有任何的文件或者子文件夹,否则删除失败 * 5. listFiles(FileFilter filter) 这个方法需要添加一个过滤器,里面重写accept(File file)方法 * 该方法只能对单层子文件夹中的文件或者目录进行过滤 * accept(File file)它的返回值是一个boolean值,如果返回值为false,代表该文件不允许存入到File数组当中 * 如果该方法的返回值为true,代表该文件需要放入到File数组当中
递归: 方法递归 * 方法递归两种方式: * 直接递归:方法内部直接调用自己本身 * 间接递归:方法内部不是直接调用自己,但是通过其他方法还可以再次调用到该方法,形成一个闭环 * 出口---->边界条件--->让当前正在执行的递归方法停止 * 注意事项: * 1. 递归必须有边界值: * 2. 使用递归次数不能过多,一般都是较少的次数 * 3. 构造方法不能使用递归
文件过滤器 Filter--->过滤器 * FileFilter * listFiles() ---File[] * list(FileFilter filter) --->File[] * 在FileFilter类当中的accept()方法 * 是用来添加满足条件的文件,如果accept方法的返回值是true,代表该文件(File实例)是允许存入到File数组当中的 * 如果accept方法的返回值为false,就代表该文件是不允许放入到File数组当中的 * Arrays.deepToString()