黑马程序员技术交流社区

标题: 【石家庄校区】就业班_JavaSE_day09_File类及递归思想 [打印本页]

作者: 风中的消逝    时间: 2018-4-23 14:47
标题: 【石家庄校区】就业班_JavaSE_day09_File类及递归思想
本帖最后由 小石姐姐 于 2018-4-24 17:07 编辑

                                      就业班_JavaSE_day09_File类及递归思想
一 File类  
    - 表示文件和目录
    - 构造方法
      - File File(String pathname): 使用指定的路径名创建一个File对象.
      - File File(File parent, String child): 根据指定的父目录File对象和路径名创建File对象
      注意:new只创建了File对象, 不会在磁盘上创建 ; 最后是创建目录还是文件是根据创建方法来决定的;
               一般用相对路径,相对于工程目录;. 表示工程目录。
      
    - 常用成员方法
      - 创建:
        - boolean createNewFile(): 新建一个文件
        - boolean mkdir(): 新建一个目录
        - boolean mkdirs(): 新建多层目录, 级联创建。
          - 注意: 创建目录就只创建目录, 不会创建文件. 即使有a.txt也会把他作为目录名创建目录
      - 删除
        - boolean delete(): 删除文件或目录.  注意: 删除是永久删除, 回收站没有
      - 获取
        - String getName(): 获取文件名或目录名(不含上层目录)
        - long length(): 获取文件的大小, 单位byte   注意: 不能用来返回一个目录的大小。
        - String[] list(): 获取当前路径下所有文件和目录名称. File对象必须是目录。
        - File[] listFiles(): 获取当前路径下的所有文件和目录的File对象. File对象必须是目录。
      - 判断
        - boolean exists(): 判断文件或目录是否存在
        - boolean isDirectory(): 判断该File对象是否为目录
        - boolean isFile(): 判断该File对象是否为文件
        - boolean isHidden(): 判断该文件或目录是否为隐藏的
      - 修改
        - boolean renameTo(File dest): 重命名文件或者目录。

* 递归
    * 原理: 将大的问题拆分为小问题, 再将小问题拆分为更小的问题, 解决了最小的问题后, 更大的问题也可以解决, 最终整个问题得到解决
    * 在代码中指的是方法自己调用自己
    * 注意事项
        * 递归必须有出口, 否则内存溢出 StackOverFlowError
        * 递归次数不能太多, 否则也会内存溢出
    * 补充: 递归和循环的相互转换
        * 递归都可以转换为循环实现
        * 循环不一定能转换为递归
        
        1 求N的阶乘       n! = n * (n-1) !
        2 不死神兔         f(n) = f(n-1) + f(n-2)
        3 求文件夹大小  文件夹大小 = 所有子文件夹大小+ 所有子文件大小
        
        4 统计文件夹(包含子文件夹)中,每种类型的文件及个数。                     返回值可以定义成一个Map<文件类型,个数>    比较二个Map 如果key相同,累加value,如果可以不同,取并集。
        5 统计文件夹(包含子文件夹)中,扩展名为.java的所有文件名称,             返回值可以定义为一个List<文件名称>
            如果要求返回的文件名称不重复的话                                              返回值可以定义为一个Set<文件名称>
            
        涉及到返回值的递归,需要考虑返回值类型,根据不同需求来定义接受返回值的类型,然后根据返回值类型来确定变量是放在方法外,还是放在方法内。            
               
        6 删除文件夹      删除文件夹 = 删除所有子文件夹 + 删除所有子文件夹
        7 复制文件夹      复制文件夹 = 复制所有子文件夹 + 复制所有子文件
        8 汉诺塔             移动N个盘子 从X柱子到Z柱子,借助Y柱子。     
                                                     1 移动N-1个盘子从X柱子到Y柱子,借助Z柱子
                                                     2 移动N盘子从X柱子到Z柱子
                                                     3 移动N-1个盘子从Y柱子到Z柱子,借助X柱子
     







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2