File类

File类

概述

  • File类的一个对象,代表一个文件或者一个文件目录(文件夹)
  • File类声明在java.io包下

File类的实例

三个构造器(此时只是内存层面的一个对象)

  • public File(String pathname)

    以pathname为路径创建File对象,可以是绝对路径或相对路径

    • 绝对路径:是一个固定的路径,从盘符开始
    • 相对路径:是相较于某个路径下指明的路径(可以用常量File.separator来表示分隔符,因为每个系统的分隔符不相同)

    PFSYl.png

  • public File(String parent, String child)

    • parent:上一层目录
    • child:在parent目录下指定的目录

    PI6uD.png

  • public File(File parent, String child)

    PI9xN.png

此时调用toString()方法时,只是把文件的路径做一个输出

File类常用方法

此时的方法调用还是内存层面的方法调用

File类的获取功能

  1. getAbsolutePath()

    获取绝对路径

  2. getPath()

    获取路径

  3. getName()

    获取名称

  4. getParent()

    获取上层文件目录路径,若无,返回null

  5. length()

    获取文件长度

  6. lastModified()

    获取最后一次的修改时间,毫秒值


7和8两个方法适用于文件目录

  1. list()(返回值String[])

    获取指定目录下的所有文件或者文件目录的名称数组

  2. listFiles()(返回值File[])

    获取指定目录下所有文件或者文件目录的File数组

代码实现

1-6方法

File file1 = new File("hello.txt");
File file2 = new File("E:\\workspace_idea\\JavaAdvanced\\IO\\hi.txt");

System.out.println(file1.getAbsolutePath());//E:\workspace_idea\JavaAdvanced\IO\hello.txt
System.out.println(file2.getAbsolutePath());//E:\workspace_idea\JavaAdvanced\IO\hi.txt

System.out.println(file1.getPath());//hello.txt
System.out.println(file2.getPath());//E:\workspace_idea\JavaAdvanced\IO\hi.txt

System.out.println(file1.getName());//hello.txt
System.out.println(file2.getName());//hi.txt

System.out.println(file1.getParent());//null
System.out.println(file2.getParent());//E:\workspace_idea\JavaAdvanced\IO

System.out.println(file1.length());//0
System.out.println(file2.length());//0

System.out.println(file1.lastModified());//0
System.out.println(file2.lastModified());//0

此时两个文件都不存在的运行结果

File类_第1张图片


此时创建了这两个文件,文件里面的内容和其文件名相同

File类_第2张图片


7-8方法

File file3 = new File("E:\\workspace_idea\\JavaAdvanced\\IO");
String[] list = file3.list();
for (String i : list) {
    System.out.println(i);
}

File[] files = file3.listFiles();
for (File f : files){
    System.out.println(f);
}

File类_第3张图片

File类的重命名

renameTo(File dest)

把文件重命名为指定的文件路径

若是想要返回为true,必须保证file1在硬盘中是存在的,且file2不可以存在

两者都存在,返回false

//此时file1存在,file2不存在
File file1 = new File("hello.txt");
File file2 = new File("E:\\workspace_idea\\JavaAdvanced\\IO\\hi.txt");

boolean renameTo = file1.renameTo(file2);
System.out.println(renameTo);//true

File类_第4张图片

File类的判断功能

  1. isDirectory()

    判断是否是文件目录

  2. isFile()

    判断是否是文件

  3. exists()

    判断是否存在

  4. canRead()

    判断是否可读

  5. canWrite()

    判断是否可写

  6. isHidden()

    判断是否隐藏

代码实现

//此时file1不存在,file2存在
File file1 = new File("hello.txt");
File file2 = new File("E:\\workspace_idea\\JavaAdvanced\\IO\\hi.txt");

System.out.println("file1:");
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file1.exists());
System.out.println(file1.canRead());
System.out.println(file1.canWrite());
System.out.println(file1.isHidden());

System.out.println();

System.out.println("file2:");
System.out.println(file2.isDirectory());
System.out.println(file2.isFile());
System.out.println(file2.exists());
System.out.println(file2.canRead());
System.out.println(file2.canWrite());
System.out.println(file2.isHidden());

File类_第5张图片

File类的创建功能

  1. createNewFile()

    创建文件,若文件存在,则不创建,返回false

    File file = new File("hello.txt");
    if(!file.exists()){
        file.createNewFile();
        System.out.println("创建成功");
    }else{
        System.out.println("该文件存在");
        file.delete();
        System.out.println("删除成功");
    }
    //创建成功
    
  2. mkdir()

    创建文件目录,如果此文件目录存在,就不创建;如果此文件目录的上层目录不存在,也不创建

    //此时该目录不存在,上层目录存在
    File file1 = new File("E:\\workspace_idea\\JavaAdvanced\\IO\\Java1");
    boolean mkdir1 = file1.mkdir();
    if(mkdir1){
        System.out.println("创建成功");
    }else{
        System.out.println("创建失败");
    }
    
    //此时该目录不存在,上层目录也不存在
    File file2 = new File("E:\\workspace_idea\\JavaAdvanced\\IO1\\Java2");
    boolean mkdir2 = file2.mkdir();
    if(mkdir2){
        System.out.println("创建成功");
    }else{
        System.out.println("创建失败");
    }
    

    PIvpd.png

  3. mkdirs()

    创建文件目录,如果上层目录不存在,一并创建

注:如果创建文件或文件目录没有写盘符路径,那么默认在项目路径下

File类的删除功能

delete()

删除文件或者文件夹(Java删除不走回收站)

//此时该文件存在
File file = new File("hello.txt");
if(!file.exists()){
    file.createNewFile();
    System.out.println("创建成功");
}else{
    System.out.println("该文件存在");
    file.delete();
    System.out.println("删除成功");
}

PIZ8U.png

总结

  • File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。
  • File类的对象常会作为参数传递到流的构造器中,指明读取或写入的节点

你可能感兴趣的:(File类)