File类的介绍和用法

1.数据都是以字节的形式存在的,不管什么类型的文件(图片,视频,音频,文本等)最终都是字节数据。
java.io.File 类是文件和目录路径表示

2.File 类的构造方法
public File(String pathname) :通过路径创建File对象
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。 

public class Demo01 {
    public static void main(String[] args) {
//        File类的构造方法
        //路径分隔符:
        //windows :  \反斜杠也是java中转义字符,所以使用时要进行转义, \\
        //Linux,Unix,Mac :  /
//     public File(String pathname) :通过路径创建File对象
        File f1 = new File("F:\\study\\1.txt");
        File f2 = new File("F:/study/1.txt");
        System.out.println("f1 = " + f1);
        System.out.println("f2 = " + f2);
//     public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的
        String parent="F:/study/1.txt";
        String child="1.txt";
        File f3 = new File(parent,child);
        System.out.println("f3 = " + f3);
//     public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的
        File f4 = new File(new File(parent), child);
        System.out.println("f4 = " + f4);


    }
}

运行结果:

注:路径分隔符:windows: \反斜杠也是java中转义字符,所以使用时要进行转义:\\
                              Linux,Unix,Mac: /

3.获取功能方法
public String getAbsolutePath() :返回此File的绝对路径名字符串。
public String getPath() :将此File转换为路径名字符串。 【获取构造路径】
public String getName()  :返回由此File表示的文件或目录的名称。  如果有后缀一并获取
public long length()  :返回由此File表示的文件的长度【单位是字节】。 

相对路径和绝对路径的概念:
绝对路径:从盘符开始的路径,这是一个完整的路径,如:F:/study/狗子日记.txt

相对路径:在访问本项目文件时,可以使用相对路径,如:dir/狗子日记.txt

public class Demo02 {
    public static void main(String[] args) {
        //绝对路径
        File f1 = new File("F:/study/狗子日记.txt");
        //相对路径(当前项目可以使用相对路径)
        File f2 = new File("dir/狗子日记.txt");

//        public String getAbsolutePath() :返回此File的绝对路径名字符串。
        System.out.println("绝对路径:"+f1.getAbsoluteFile());
        System.out.println("绝对路径:"+f2.getAbsoluteFile());
//        public String getPath() :获取构造路径,创建File类用的啥路径获取的就是啥路径
        System.out.println("构造路径:"+f1.getPath());
        System.out.println("构造路径:"+f2.getPath());

//        public String getName()  :返回由此File表示的文件或目录的名称。  如果有后缀一并获取
        String name = f2.getName();
        System.out.println("name = " + name);
//        public long length()  :返回由此File表示的文件的长度【单位是字节】。
        long length = f2.length();
        System.out.println("length = " + length);

    }
}

4.判断功能的方法
public boolean exists() :此File表示的文件或目录是否实际存在。
public boolean isDirectory() :此File表示的是否为目录。
public boolean isFile() :此File表示的是否为文件。

public class Demo03 {
    public static void main(String[] args) {
        File f = new File("F:/study/1.java");
//        - public boolean exists() :此File表示的文件或目录是否实际存在。
        boolean flag1 = f.exists();
        System.out.println("flag = " + flag1);
//        - public boolean isDirectory() :此File表示的是否为目录。
        boolean flag2 = f.isDirectory();
        System.out.println("flag2 = " + flag2);
//        - public boolean isFile() :此File表示的是否为文件。
        boolean flag3 = f.isFile();
        System.out.println("flag3 = " + flag3);

    }
}

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

public class Demo04 {
    public static void main(String[] args) throws IOException {
//      public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
        File f1 = new File("dir/file.txt");
        boolean newFile = f1.createNewFile();
        System.out.println("newFile = " + newFile);
//      public boolean mkdir() :创建由此File表示的目录。
        File f2 = new File("dir01");
        boolean flag = f2.mkdir();
        System.out.println("flag = " + flag);
//      public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
        File f3 = new File("dir02/dnf/abc");
        boolean flags = f3.mkdirs();
        System.out.println("flags = " + flags);

        File f4 = new File("dir02");

        System.out.println("文件下不是空" + f4.delete());//false

        System.out.println("文件下是空" + f2.delete());//true

    }
}

执行后的结果:

注:

1)delete方法,如果此File表示目录,则目录必须为空才能删除。

2)函数的删除不走回收站。谨慎使用。

6.遍历功能
public String[] list() :返回一个String数组,获取当前File目录下的所有子文件或目录。
public File[] listFiles() :返回一个File数组,获取当前File目录下的所有子文件或目录。  
public File[] listFiles(FileFilter filter):按照filter的规则筛选需要的子文件

public class Demo05 {
    public static void main(String[] args) {
        File file = new File("F:/study");
//        public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
        String[] list = file.list();
        for (String fileName : list) {
            System.out.println("fileNP = " + fileName);
        }

        System.out.println("=========================");
//        public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
        File[] files = file.listFiles();
        for (File filePath : files) {
            System.out.println("fileName = " + filePath);
        }

//        public File[] listFiles(FileFilter filter):按照filter的规则筛选需要的子文件
//        比如获取当前File目录下的所以txt文件
        FileFilter filter=file1 ->{
            String name = file1.getName();
            boolean result = name.endsWith(".txt");
            return result;
        };
        File[] fileTxt = file.listFiles(filter);
        for (File f : fileTxt) {
            System.out.println("f = " + f);
        }

//        注意:如果File目录下没内容会返回:空的数组
        File file1 = new File("dir02/dnf/abc");
        System.out.println("file1 = " + file1.list().length);
//        注意:如果File路径是文件不是目录:null
        File file2 = new File("dir/狗子日记.txt");
        System.out.println("file2.list().length = " + file2.list());
//        注意:如果File目录不存在则返回:null
        File file3 = new File("dir/txt");
        System.out.println("file3.list() = " + file3.list());
    }
}

运行结果:

注:

调用listFiles方法的File对象,表示的必须是实际存在的目录,否则返回null,无法进行遍历,可看上图中的最后代码。

7.习题,统计文件中java文件的数量

public class Demo06 {
    public static void main(String[] args) {
        //1.获取一个File类
        File fileTager = new File("F:/study");
        //2.获取File目录下的.java文件
        FileFilter filter = file->{
            String name = file.getName();
            //将获取的文件名字全部小写化
            String NewName = name.toLowerCase();
            boolean result = NewName.endsWith(".java");
            return result;
        };

        File[] file_java = fileTager.listFiles(filter);
        System.out.println("file_java.length = " + file_java.length);
        for (File file : file_java) {
            System.out.println("file = " + file);
        }


    }
}

执行结果:

知识小插曲:

String.toLowerCase(),将字符串里的英文字母全部转化为小写

String.toUpperCase(),将字符串里的英文字母全部转化为大写

String.endsWith(".java"),判断字符串结尾是.java,如果是则返回:true

注解:@FunctionalInterface 为函数是接口,可以用Lambda表达式抒写

Lambda表达式,就是重写函数表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值