Skip to content

磁盘操作

File

java.io.File类是文件和目录路径名的抽家表示形式。 java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作。

File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法。

静态变量

  • static String pathSeparator:与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
  • static char pathSeparatorchar:与系统有关的路径分隔符。
  • static String separator:与系统有关的默以名称分隔符,为了方便,它被表示为一个字符串。
  • static char separatorChar:与系统有关的默认名称分隔符。

构造方法

  • File(String pathname):通过将给定路径名字符串转换为抽象路径名来创建一个新File实例。

    String pathname:字符串的路径名称

    路径可以是以文件结尾,也可以是以文件夹结尾

    路径可以是相对路径,也可以是绝对路径

    创建File对象,只是把字符再路径封装为File对象,不考虑路径真假问题

  • File(String parent, String child):根据parent路径名字符串和child路径名字符串创建一个新File实例。

    File parent:父路径

    String child:子路径

    父路径和子路径,可以单独书写,使用起来非常灵活,父路径和子路径都可以变化。

  • File(File parent, String child):根据parent抽象路径名和child路径名字符串创建一个新File实例。

    File parent:父路径

    String child:子路径

    父路径和子路径,可以单独书写,使用起来非常灵活:父路径和子路径都可以变化。

    父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象。

常用方法

  • public String getAbsolutePath():返回此File的绝对路径名字符串。

  • public String getPath():将此File转换为路径名字符串。

    将此File转换为路径名字符串,获取的构造方法中传递的路径。

    toString方法调用的就是getPath方法

  • public String getName():返回由此File表示的文件或目录的名称。

  • public long length():返回由此File表示的文件的长度。

    文件夹是没有大小概念的,不能获取文件夹的大小

    如果构造方法中给出的路径不存在,那么length方法返回0

  • public boolean exists():此File表示的文件或目录是否实际存在

  • public boolean isDirectory():此File表示的是否为目录。

  • boolean isFile():此File表示的是否为文件。

  • public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件

    true:文件不存在,创建文件,返回true false:文件存在,不会创建,返回false

  • public boolean delete():删除由此File表示的文件或目录。

    true:文件/文件夹删除成功,返回true false:文件夹中有内容,不会删除返回false;构造方法中路径不存在返回false

  • public boolean mkdir():创建单级空文件夹

  • public boolean mkdirs():既可以创建单级空文件夹,也可以创建多级文件夹

    true:文件夹不存在,创建文件夹,返回true false:文件夹存在,不会创建,返回false;构造方法中给出的路径不存在返回false

  • public String[] list():返回一个String数组,表示该File目录中的所有子文件或目录。

  • public File[] listFiles():返回一个File数组,表示该File目录中的所有的子文件或目录。

递归

递归:方法自己调用自己

递归的分类:

递归分为两种:直接递归和间接递归。

  • 直接递称为方法自身调用自己。
  • 间接递归可以A方法调用B方法,B方法调用c方法,C方法调用A方法。

注意事项:

  • 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
  • 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
  • 构造方法,禁止递归。

应用

遍历文件夹中的全部文件和文件夹

java
public static void getAllFile(File dir){
    // 打印被遍历的目录名称
    System.out.println(dir);   
    File[]files = dir.listFiles();
    for (File f files){
        // 对遍历得到的FiLe对象f进行判断,判断是否是文件夹
        if(f.isDirectory()){
            // f是一个文件夹,侧则续遍历这个文件夹
            // 我们发现getAllFile方法就是传递文件夹,遍历文件夹的方法
            // 所以直接调用getAllFile方法即可:递归(自己调用自己)
            getALLFile(f);
        } else{
            // f是一个文件,直接打印即可
            System.out.println(f);
        }
    }