黑马程序员技术交流社区

标题: 【成都校区】day08 [打印本页]

作者: blovedr    时间: 2019-1-3 13:49
标题: 【成都校区】day08
                                                                           day08
File
java.io.File类
文件和目录路径名的抽象表示形式。
java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作
我们可以使用File类的方法
    创建一个文件/文件夹
    删除文件/文件夹
    获取文件/文件夹
    判断文件/文件夹是否存在
    对文件夹进行遍历
    获取文件的大小
File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法
重点:记住这三个单词
    file:文件
    directory:文件夹/目录
    path:路径
static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。   ;
static char pathSeparatorChar
与系统有关的路径分隔符。

static String separator
与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 \   /
static char separatorChar
与系统有关的默认名称分隔符。

操作路径:路径不能写死了
C:\develop\a\a.txt  windows
C:/develop/a/a.txt  linux

"C:"+File.separator+"develop"+File.separator+"a"+File.separator+"a.txt"
路径:
   
绝对路径:是一个完整的路径
        
以盘符(c:,D:)开始的路径
            c:\\a.txt
            C:\\Users\itcast\\IdeaProjects\\shungyuan\\123.txt
            D:\\demo\\b.txt
   
相对路径:是一个简化的路径                 
        
相对指的是相对于当前项目的根目录(C:\\Users\itcast\\IdeaProjects\\shungyuan)
        
如果使用当前项目的根目录,路径可以简化书写
        C:\\Users\itcast\\IdeaProjects\\shungyuan\\123.txt-->
简化为: 123.txt(可以省略项目的根目录)
   
注意:
        1.windows
路径是不区分大小写
        2.
路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠
File类的构造方法
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
参数:
    String pathname:
字符串的路径名称
   
路径可以是以文件结尾,也可以是以文件夹结尾
   
路径可以是相对路径,也可以是绝对路径
   
路径可以是存在,也可以是不存在
   
创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
参数:把路径分成了两部分
    String parent:
父路径
    String child:
子路径
好处:
   
父路径和子路径,可以单独书写,使用起来非常灵活;父路径和子路径都可以变化
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
参数:把路径分成了两部分
    File parent:
父路径
    String child:
子路径
好处:
     
父路径和子路径,可以单独书写,使用起来非常灵活;父路径和子路径都可以变化
     
父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象
File类获取功能的方法
    - public String getAbsolutePath()
:返回此File的绝对路径名字符串。
    - public String getPath()
:将此File转换为路径名字符串。
    - public String getName()  
:返回由此File表示的文件或目录的名称。         获取路径中最后那个路径
    - public long length()  
:返回由此File表示的文件的大小。         File的路径不存在  0         File的路径文件夹  0
File类判断功能的方法
    - public boolean exists()
:此File表示的文件或目录是否实际存在。
    - public boolean isDirectory()
:此File表示的是否为目录。
    - public boolean isFile()
:此File表示的是否为文件。
File类创建删除功能的方法
    - public boolean createNewFile()
:当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
    - public boolean delete()
:删除由此File表示的文件或目录。
    - public boolean mkdir()
:创建由此File表示的目录。
    - public boolean mkdirs()
:创建由此File表示的目录,包括任何必需但不存在的父目录。
File类遍历(文件夹)目录功能
    - public String[] list()
:返回一个String数组,表示该File目录中的所有子文件或目录。
    - public File[] listFiles()
:返回一个File数组,表示该File目录中的所有的子文件或目录。

注意:
    list
方法和listFiles方法遍历的是构造方法中给出的目录
   
如果构造方法中给出的目录的路径不存在,会抛出空指针异常
   
如果构造方法中给出的路径不是一个目录,也会抛出空指针异常
递归
递归:方法自己调用自己
-
递归的分类:
  -
递归分为两种,直接递归和间接递归。
  -
直接递归称为方法自身调用自己。
  -
间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。
-
注意事项:
  -
递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
  -
在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
  -
构造方法,禁止递归
递归的使用前提:
   
当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归
递归求和的原理
file:///C:/Users/liu/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
过滤器
在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器
File[] listFiles(FileFilter filter)
java.io.FileFilter接口:用于抽象路径名(File对象)的过滤器。
    作用:用来过滤文件(File对象)
    抽象方法:用来过滤文件的方法
        boolean accept(File pathname) 测试指定抽象路径名是否应该包含在某个路径名列表中。
        参数:
            File pathname:使用ListFiles方法遍历目录,得到的每一个文件对象
File[] listFiles(FilenameFilter filter)
java.io.FilenameFilter接口:实现此接口的类实例可用于过滤器文件名。
    作用:用于过滤文件名称
    抽象方法:用来过滤文件的方法
        boolean accept(File dir, Stringname) 测试指定文件是否应该包含在某一文件列表中。
        参数:
            File dir:构造方法中传递的被遍历的目录
            String name:使用ListFiles方法遍历目录,获取的每一个文件/文件夹的名称
注意:
    两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤的方法accept,在方法中自己定义过滤的规则






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