File类(笔记)

一.File类的介绍

java.io.File类
文件和目录路径名的抽象表示形式。
把计算机中的文件和文件夹(目录)封装为了File对象,就可以使用File对象来操作这些文件和文件夹
我们可以使用File对象创建文件和文件夹
我们可以使用File对象删除文件和文件夹
我们可以使用File对象获取文件和文件夹的路径
我们可以使用File对象获取文件的大小(单位是字节)
我们可以使用File对象遍历文件夹
记住3个相关的单词:
1.file:文件
2.directory:文件夹(目录)
3.path:路径

二.路径

路径:表示存储文件和文件夹的路径(位置)
分类:
1.绝对路径:以盘符开始的路径(c:,d:,e:)
c:\1.jpg d:\aaa\a.txt D:\Work_idea\EE141\day10
2.相对路径:相对于当前项目的根目录而言,我们使用路径,可以省略项目的根目录
项目的根目录:D:\Work_idea\EE141_new
注意:大家的项目根目录都不同
a.绝对路径[必须包含项目的根目录]才可以省略
D:\Work_idea\EE141\day10 可以省略为 day10
D:\Work_idea\EE141\day10\a.txt 可以省略为 day10\a.txt
c:\1.jpg 不能省略
1.jpg==> D:\Work_idea\EE141\1.jpg
abc\bbc\ccc\abc.java==>D:\Work_idea\EE141\abc\bbc\ccc\abc.java
b.当我们省略书写项目的根目录,java会在相对路径前默认给添加上
注意:
1.路径是不区分大小写的 c:\1.jpg 等价 C:\1.jpg
2.路径中目录的分割的符号\必须的写两个\,\本身是一个转义字符,必须的写两个代表一个
3.路径中目录的分割的符号也可以使用一个正斜杠/ c:\a.txt 等价 c:/a.txt

三.File的构造方法(重点)

在这里插入图片描述

package com.itheima.demo01File;

import java.io.File;

/*
    File类的构造方法
        public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
        public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
        public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
 */
public class Demo01FileConstructor {
    public static void main(String[] args) {
        //show02("c:\\","abc\\1.jpg");//c:\abc\1.jpg
        //show02("c:\\","a.txt");//c:\a.txt
        //show02("d:\\hello\\aaa","a.txt");//d:\hello\aaa\a.txt
        show03();
    }

    /*
        public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
        参数:
            File parent:父路径
            String child:子路径
        把路径分成了两部分,一个父路径,一个子路径
        父路径和子路径可以分别传递不同的路径,组成各种各样的路径
     */
    private static void show03() {
        File p = new File("c:\\");
        File file  = new File(p,"a.txt");
        System.out.println(file);//c:\a.txt
    }

    /*
        public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
        参数:
            String parent:父路径
            String child:子路径
        把路径分成了两部分,一个父路径,一个子路径
        父路径和子路径可以分别传递不同的路径,组成各种各样的路径
     */
    private static void show02(String parent, String child) {
        File file = new File(parent,child);
        System.out.println(file);
    }

    /*
        public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
        参数:
            String pathname:传递路径名称
        注意:
            1.参数传递的路径名称可以是绝对路径,也可以是相对路径
            2.参数传递的路径名称可以是以文件结尾的,也可以是以文件夹结尾的
            3.参数传递的路径名称可以是真实存在的,也可以是不存在的
                构造方法仅仅是把字符串路径,转换为File对象,不考虑路径真实情况
     */
    private static void show01() {
        File f1 = new File("c:/abc/1.jpg");
        System.out.println(f1);//c:\abc\1.jpg  File类重写了Object类的toString方法

        File f2 = new File("D:\\Work_idea\\EE390\\day10\\a.txt");
        System.out.println(f2);//D:\Work_idea\EE390\day10\a.txt

        File f3 = new File("day10\\a.txt");
        System.out.println(f3);//day10\a.txt

        File f4 = new File("C:\\demo");
        System.out.println(f4);//C:\demo
    }
}

四.File类的成员方法_获取功能的方法(重点)

public String getAbsolutePath() :返回此File的绝对路径名字符串。
public String getPath() :将此File转换为路径名字符串。
public String getName() :返回由此File表示的文件或目录的名称。
public long length() :返回由此File表示的文件的长度。 不能获取目录的长度

在这里插入图片描述

package com.itheima.demo01File;

import java.io.File;

/*
    File类的成员方法_获取功能的方法(重点)
    public String getAbsolutePath() :获取构造方法中传递路径的绝对路径。
        构造方法中传递的路径是绝对的,直接返回绝对路径
        构造方法中传递的路径是相对的,会在相对路径前添加项目根目录,组成绝对路径返回
    public String getPath() :返回构造方法中传递的路径
        构造方法中传递的路径是绝对的,就返回绝对路径
        构造方法中传递的路径是相对的,就返回相对路径
    public String getName()  :返回由此File表示的文件或目录的名称。
    public long length()  :返回由此File表示的文件的大小。 不能获取目录的大小。
 */
public class Demo02FileMethod {
    public static void main(String[] args) {
        show04();
    }

    /*
        public long length()  :获取构造方法传递文件的大小,单位是字节.不能获取目录(文件夹)的大小。
        注意:
            1.构造方法中传递的文件不存在,此方法返回0
            2.构造方法中传递的是一个文件夹的路径,则返回值是不确定的(文件夹是没有大小概念的)
     */
    private static void show04() {
        File f1 = new File("c:\\1.jpg");
        System.out.println(f1.length());//161,548 字节

        File f2 = new File("c:\\缘起.mp4");
        System.out.println(f2.length());//67,995,218 字节

        File f3 = new File("day10\\1.jpg");
        System.out.println(f3.length());//0 文件不存在

        File f4 = new File("D:\\Work_idea\\EE390\\day10");
        System.out.println(f4.length());//0 4096 文件夹是没有大小概念的
    }

    /*
        public String getName()  :返回由此File表示的文件或目录的名称。
            获取构造方法中传递的路径的末尾的文件|文件夹名称
     */
    private static void show03() {
        File f1 = new File("D:\\Work_idea\\EE390\\day10\\a.txt");
        System.out.println(f1.getName());//a.txt

        File f2 = new File("D:\\Work_idea\\EE390");
        System.out.println(f2.getName());//EE390

        File f3 = new File("aaa/bbb/ccc/ddd/eee/1.jpg");
        System.out.println(f3.getName());//1.jpg
    }


    /*
        public String getPath() :返回构造方法中传递的路径
            构造方法中传递的路径是绝对的,就返回绝对路径
            构造方法中传递的路径是相对的,就返回相对路径
        File类重写了Object类的toString方法
        public String toString() {
            return getPath();
        }
     */
    private static void show02() {
        File f1 = new File("D:\\Work_idea\\EE390\\day10\\a.txt");
        System.out.println(f1.getPath());//D:\Work_idea\EE390\day10\a.txt

        File f2 = new File("day10\\a.txt");
        System.out.println(f2.getPath());//day10\a.txt
        System.out.println(f2.toString());//day10\a.txt
        System.out.println(f2);//day10\a.txt
    }

    /*
        Absolute:绝对的
        public String getAbsolutePath() :获取构造方法中传递路径的绝对路径。
        构造方法中传递的路径是绝对的,直接返回绝对路径
        构造方法中传递的路径是相对的,会在相对路径前添加项目根目录,组成绝对路径返回
     */
    private static void show01() {
        File f1 = new File("D:\\Work_idea\\EE390\\day10\\a.txt");
        System.out.println(f1.getAbsolutePath());//D:\Work_idea\EE390\day10\a.txt

        File f2 = new File("day10\\a.txt");
        System.out.println(f2.getAbsolutePath());//D:\Work_idea\EE390\day10\a.txt

        File f3 = new File("day10\\src");
        System.out.println(f3.getAbsolutePath());//D:\Work_idea\EE390\day10\src
    }
}

五.File类的成员方法_判断功能的方法(重点)

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

在这里插入图片描述

package com.itheima.demo01File;

import java.io.File;

/*
    File类的成员方法_判断功能的方法(重点)
    public boolean exists() :此File表示的文件或目录是否实际存在。
    public boolean isDirectory() :此File表示的是否为目录。
    public boolean isFile() :此File表示的是否为文件。
 */
public class Demo03FileMethod {
    public static void main(String[] args) {
        show02();
    }

    /*
        public boolean isDirectory() :判断构造方法中传递的路径是否以文件夹结尾
            是文件夹结尾,返回true
            不是文件夹结尾,返回false
        public boolean isFile() :判断构造方法中传递的路径是否以文件结尾
            是文件结尾,返回true
            不是文件结尾,返回false
        注意:
            1.以上两个方法使用的前提,路径必须是真实存在的,否则两个方法都返回false
            2.在计算机中只有文件和文件夹,所以两个方法互斥
     */
    private static void show02() {
        File f1 = new File("c:\\abcde");//路径不存在
        System.out.println(f1.isDirectory());//false
        System.out.println(f1.isFile());//false
        System.out.println("------------------------------");
        File f2 = new File("day10\\a.txt");
        if(f2.exists()){
            System.out.println(f2.isDirectory());//false
            System.out.println(f2.isFile());//true
        }
        System.out.println("------------------------------");
        File f3 = new File("day10");
        if(f3.exists()){
            System.out.println(f3.isDirectory());//true
            System.out.println(f3.isFile());//false
        }
    }

    /*
        public boolean exists() :判断构造方法中传递的路径是否存在
            路径存在,返回true
            路径不存在,返回false
     */
    private static void show01() {
        File f1 = new File("c:\\1.jpg");
        System.out.println(f1.exists());//true

        File f2 = new File("c:\\1afadsfdsafdsaf.jpg");
        System.out.println(f2.exists());//false

        File f3 = new File("day10\\a.txt");
        System.out.println(f3.exists());//true

        File f4 = new File("day11");
        System.out.println(f4.exists());//false
    }
}

六.File类的成员方法_创建删除功能的方法(重点)

public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
public boolean mkdir() :创建由此File表示的目录。
public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
public boolean delete() :删除由此File表示的文件或目录。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.itheima.demo01File;

import java.io.File;
import java.io.IOException;

/*
    File类的成员方法_创建删除功能的方法(重点)
    public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
    public boolean mkdir() :创建由此File表示的目录。
    public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
    public boolean delete() :删除由此File表示的文件或目录。
 */
public class Demo04FileMethod {
    public static void main(String[] args) throws IOException {
        show03();
    }

    /*
        public boolean delete() :删除构造方法传递的文件|文件夹
        返回值:boolean
            文件|文件夹存在,删除成功,返回true
            文件|文件夹不存在,删除失败,返回false
            文件夹中有内容,不会删除,返回false
        注意:
            此删除方法,不走回收站,直接在硬盘删除,需要谨慎
     */
    private static void show03() {
        File f1 = new File("d:\\1.txt");
        boolean b1 = f1.delete();
        System.out.println("b1:"+b1);

        File f2 = new File("day10\\aaa");
        boolean b2 = f2.delete();
        System.out.println("b2:"+b2);

        File f3 = new File("day10\\111");
        boolean b3 = f3.delete();
        System.out.println("b3:"+b3);//b3:false 文件夹中有内容,不会删除
    }

    /*
        mk:make 创建,创造  dir:directory 文件夹
        public boolean mkdir() :只能创建单级文件夹
        public boolean mkdirs() :既能创建单级文件夹,又能创建多级文件夹
        返回值:boolean
            文件夹不存在,创建成功,返回true
            文件夹存在,不会创建(覆盖),返回false 构造方法中路径不存在,返回false
        注意:
            1.此方法只能创建文件夹,不能创建文件
            2.创建文件夹路径和文件夹名称,在构造方法中给出
     */
    private static void show02() {
        File f1 = new File("day10\\aaa");
        boolean b1 = f1.mkdir();
        System.out.println("b1:"+b1);

        File f2 = new File("day10\\111\\222\\333\\444\\555\\666");
        boolean b2 = f2.mkdirs();
        System.out.println("b2:"+b2);

        File f3 = new File("f:\\abc");
        boolean b3 = f3.mkdir();
        System.out.println("b3:"+b3);//b3:false 路径不存在
    }

    /*
        create:创建
        public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
        返回值:boolean
            文件不存在,创建成功,返回true
            文件存在,不会创建(覆盖),返回false
        注意:
            1.此方法只能创建文件,不能创建文件夹
            2.创建文件路径和文件名称,在构造方法中给出
            3.创建的文件的路径不存在,会抛出异常
            4.有些操作系统的c盘没有权限创建文件,会抛出拒绝访问异常
     */
    private static void show01() throws IOException {
        File f1 = new File("d:\\1.txt");
        boolean b1 = f1.createNewFile();
        System.out.println("b1:"+b1);

        File f2 = new File("day10\\2.txt");
        boolean b2 = f2.createNewFile();
        System.out.println("b2:"+b2);

        File f3 = new File("f:\\3.txt");
        //boolean b3 = f3.createNewFile();//IOException: 系统找不到指定的路径。

        File f4 = new File("d:\\afdsafa\\3.txt");
        //boolean b4 = f4.createNewFile();//IOException: 系统找不到指定的路径。 afdsafa文件夹不存在
    }
}

七.File类的成员方法_目录遍历的方法(重点)

在这里插入图片描述

package com.itheima.demo01File;

import java.io.File;

/*
    File类的成员方法_目录[文件夹]遍历的方法(重点)
    public String[] list()
        用于遍历目录,获取目录中所有文件和文件夹的名称,
        把多个名称存储到一个String类型的数组中返回
    public File[] listFiles()
        用于遍历目录,获取目录中所有文件和文件夹,
        把文件和文件夹封装为File对象,把多个File对象存储到一个File类型的数组中返回
    注意:
        1.要遍历的目录的路径和名称在构造方法中给出
        2.遍历的目录不存在,会抛出空指针异常
        3.以上两个方法只能变量目录,不能遍历文件,要遍历文件,也会抛出空指针异常
 */
public class Demo05FileMethod {
    public static void main(String[] args) {
        File file = new File("D:\\aaa");
        //File file = new File("D:\\aaa\\1.jpg");//NullPointerException
        //File file = new File("D:\\dfdsafdsafdsaf");//NullPointerException
        String[] arr = file.list();
        System.out.println(arr);
        //在工作中:在遍历数组和集合之前,增加一个非空判断
        if(arr!=null && arr.length>0){
            for (String fileName : arr) {
                System.out.println(fileName);
            }
        }
        System.out.println("-------------------");
        File[] files = file.listFiles();
        System.out.println(files);
        if(files!=null && files.length>0){
            for (File f : files) {
                System.out.println(f.getAbsolutePath());
            }
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旭子在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值