file类的使用

我们在学习io的时候肯定需要对电脑上的文件进行操作,过程中会用到file类来进行操作,我们本篇文章就是对file的使用进行介绍

一、File的介绍

File 类 就是当前系统中 文件或者文件夹的抽象表示

通俗的讲 就是 使用File对象 来操作我们电脑系统中的文件或者文件夹

学习File类 其实就是学习 如果通过file对象 对系统中的文件/文件夹进行增删改查

二、file方法的介绍

1.创建一个文件

    //创建一个文件
    @Test
    public void FileCreate() throws IOException {
        //根据一个路径得到一个File对象
        File file = new File("C:\\Users\\Desktop\\lt\\b.txt");
        //创建文件
        boolean b = file.createNewFile();
    }

2.删除一个文件

    //删除一个文件
    @Test
    public void FileDelete(){
        //根据一个路径得到一个File对象
        File file = new File("C:\\Users\\Desktop\\lt\\b.txt");
        //删除文件
        boolean delete = file.delete();
    }

 3.文件的转移

    //把文件重命名为指定的文件路径   可以理解为文件的转移
    @Test
    public void FileAgainName(){
        //得到一个file文件
        File file1 = new File("C:\\Users\\Desktop\\lt\\a.txt");
        File file2 = new File("C:\\Users\\Desktop\\lt\\b.txt");
        //进行移动   父路径相同  相当于进行改名
        file1.renameTo(file2);

        //得到一个file文件
        File file3 = new File("C:\\Users\\Desktop\\lt\\a.txt");
        File file4 = new File("C:\\Users\\esktop\\lt\\b\\b.txt");
        //进行移动   父路径不同  相当于进行移动
        // 注意:如果目标文件路径无效那么不会进行移动,并不会去为你创建父文件
        // 比如lt后面点的b文件夹并不存在,那么就不会移动
        file3.renameTo(file4);
    }

4.创建一个文件夹

    //创建文件夹单级
    @Test
    public void FileCreateCatalogue(){
        //根据路径得到一个file对象
        File file = new File("C:\\Users\\Desktop\\lt\\b");
        //创建文件夹  注意只可以创建单层    假设你要创建b//b1  如果没有b那么就会创建失败
        boolean mkdir = file.mkdir();
    }

    //创建文件夹多级
    @Test
    public void FileCreateCatalogues() {
        //根据路径得到一个file对象
        File file = new File("C:\\Users\\Desktop\\lt\\b\\b");
        //创建文件夹可以创建可以创建多层
        boolean mkdir = file.mkdirs();
    }

5.删除文件夹

  //删除文件夹
    @Test
    public void FileDeleteCatalogue(){
        //根据一个路径得到一个File对象
        File file = new File("C:\\Users\\Desktop\\lt\\b");
        //删除文件夹   注意:删除文件夹时,这个文件夹应是空文件夹,如果这个文件夹里有文件,则不能删除。
        boolean delete = file.delete();
    }

6.移动文件夹

//把文件重命名为指定的文件路径   可以理解为文件的转移
    //如果文件夹里面有文件那么文件也会一并转移
    @Test
    public void FileAgainNameCatalogue(){
        //得到一个file文件
        File file1 = new File("C:\\Users\\Desktop\\lt\\a");
        File file2 = new File("C:\\Users\\Desktop\\lt\\b");
        //进行移动   父路径相同  相当于进行改名
        file1.renameTo(file2);

        //得到一个file文件
        File file3 = new File("C:\\Users\\Desktop\\lt\\a");
        File file4 = new File("C:\\Users\\Desktop\\lt\\b\\b");
        //进行移动   父路径不同  相当于进行移动
        // 注意:如果目标文件路径无效那么不会进行移动,并不会去为你创建父文件
        // 比如lt后面点的b文件夹并没有,那么就不会移动
        file3.renameTo(file4);

    }

7.判断是否是文件或者文件夹以及判断文件或文件夹是否存在

//判断是否是文件或者是文件夹
    @Test
    public void FileJudgeTest(){
        File file1 = new File("C:\\Users\\Desktop\\lt\\a.txt");
        //判断是否是文件
        System.out.println("文件:"+file1.isFile());
        //判断是否是文件夹
        System.out.println("文件夹:"+file1.isDirectory());
        //判断是否存在
        System.out.println("文件或文件夹是否存在:"+file1.exists());
        System.out.println("===================");

        File file2 = new File("C:\\Users\\Desktop\\lt\\b");
        //判断是否是文件
        System.out.println("文件:"+file2.isFile());
        //判断是否是文件夹
        System.out.println("文件夹:"+file2.isDirectory());
        //判断是否存在
        System.out.println("文件或文件夹是否存在:"+file2.exists());
        System.out.println("===================");

        File file3 = new File("C:\\Users\\Desktop\\lt\\b\\y");
        System.out.println("文件或文件夹是否存在:"+file3.exists());
        System.out.println("===================");
    }

8.获取文件名称

     //获取文件名称
    @Test
    public void  FileGetName(){
        //获取file对象    文件
        File file1 = new File("C:\\Users\\Desktop\\lt\\a.txt");
        //获取文件名称
        String name1 = file1.getName();
        System.out.println(name1);

        //获取file对象     文件夹
        File file2 = new File("C:\\Users\\Desktop\\lt\\b");
        //获取文件夹名称
        String name2 = file2.getName();
        System.out.println(name2);
    }

9.获取文件大小

  //获取文件大小
    @Test
    public void FileGetSize(){
        //获取file对象    文件
        File file1 = new File("C:\\Users\\Desktop\\lt\\a.txt");
        long length1 = file1.length();
        System.out.println(length1);

        //获取file对象     文件夹   
        //这里会有问题 file直接获取文件夹大小获取的是文件夹占的空间的大小 并不是文件夹下所有文件的大小
        //文件使用file的length方法总是为0
        File file2 = new File("C:\\Users\\Desktop\\lt\\b");
        long length2 = file2.length();
        System.out.println(length2);
    }

10.获取文件的绝对路径

    //获取文件绝对路径
    @Test
    public void FileGetAbsoluteUrl(){
        //获取file对象    文件
        File file1 = new File("C:\\Users\\Desktop\\lt\\a.txt");
        String path1 = file1.getPath();
        System.out.println(path1);

        //获取file对象     文件夹   
        File file2 = new File("C:\\Users\\Desktop\\lt\\b");
        String path2 = file2.getPath();
        System.out.println(path2);
    }

 11.得到父目录文件

     //得到上一级父目录文件   
    @Test
    public void FileGetFather(){
        File file1 = new File("C:\\Users\\Desktop\\lt\\a.txt");
        //得到父级路径
        String parent = file1.getParent();
        //得到父文件
        File parentFile = file1.getParentFile();
    }

12.得到文件最后一次修改的时间

//得到文件最后一次修改的时间
    @Test
    public void FileGetFinallyUpdateTime(){
        File file1 = new File("C:\\Users\\Desktop\\lt\\a.txt");
        //获取最后得到修改时间
        long l = file1.lastModified();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(simpleDateFormat.format(new Date(l)));
    }

三、一些使用场景

 1.获取文件夹里面所有的文件路径

//获取文件夹里面所有的文件路径
    @Test
    public void FileGetCatalogueSon(){
        //根据路径得到一个file对象
        File file = new File("C:\\Users\\Desktop\\lt\\b");
        //得到文件夹下面所有文件的名称
        String[] list = file.list();
        for (String s : list) {
            System.out.println(s);
        }
        //得到文件夹下面所有的文件
        File[] files = file.listFiles();
        for (File file1 : files) {
            System.out.println(file1.getPath());
        }
    }

2.判断文件尾椎

//判断文件的尾椎  这里通过string的从后模糊匹配去做
    @Test
    public void  FileGetTrail(){
        //获取file对象    文件
        File file1 = new File("C:\\Users\\Desktop\\lt\\a.txt");
        //获取文件名称
        String name1 = file1.getName();
        //从前模糊匹配
        System.out.println(name1.startsWith(".txt"));
        //从后模糊匹配
        System.out.println(name1.endsWith(".txt"));
        System.out.println(name1.endsWith(".jpg"));
        System.out.println(name1);
    }

3.获取盘符大小

//获取盘符的总大小
    @Test
    public void  FileDriveSize(){
        //获取file对象    文件
        File file1 = new File("C:\\Users");
        //getTotalSpace获取当前文件所在盘符的大小   单位为字节  注意:如果文件或文件不存在就会打印大小为0
        long totalSpace = file1.getTotalSpace();
        //打印字节
        System.out.println(totalSpace);
        //打印GB
        System.out.println(totalSpace/1024/1024/1024);
    }

4.获取盘符剩余大小

//获取盘符的剩余大小
    @Test
    public void FileDriveSizeResidue(){
        //获取file对象    文件
        File file1 = new File("C:\\Users");
        //getFreeSpace获取当前文件所在盘符的大小   单位为字节  注意:如果文件或文件不存在就会打印大小为0
        long totalSpace = file1.getFreeSpace();
        //打印字节
        System.out.println(totalSpace);
        //打印GB
        System.out.println(totalSpace/1024/1024/1024);

//        file1.listFiles(a->{ if (a.isFile()&&a.getName()){};return false;});
    }

5.文件尾椎过滤器

//文件尾椎过滤器
    @Test
    public void FileRrailFilter(){
        File file = new File("C:\\Users\\Desktop\\lt");
        
        File[] files1 = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if (pathname.isFile() && pathname.getName().endsWith(".zip")) {
                    return true;
                }
                return false;
            }
        });
        System.out.println(files1.length);
        //因为FileFilter是函数式接口所以可以通过拉姆达表达式进行简化
        File[] files2 = file.listFiles(a -> { if (a.isFile() && a.getName().endsWith(".zip")) { return true; }return false; });

        System.out.println(files2.length);

    }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值