Java基础之File

一、File的声明

声明的File不需要是存在的,我们声明的路径可以是存在的,也可以是不存在的。因为我们只是声明,并不一定会用。

方法名说明
File(String pathname)通过给定的字符串路径指明一个File文件(或者文件夹)
File(String parent,String child)通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)
File(File parent,String child)实际上也是通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)
public static void main(String[] args) {
        //通过给定的字符串路径指明一个File文件(或者文件夹)
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa.txt");

        //通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)
        File file1=new File("D:\\Code\\ideaCode\\FileTestDemo","aa.txt");

        String path1="D:\\Code\\ideaCode\\FileTestDemo";
        String path2="aa.txt";
        File file2=new File(path1,path2);

        String path3="D:\\Code\\ideaCode\\FileTestDemo";
        File file3=new File(path3,"aa.txt");

        String path4="aa.txt";
        File file4=new File("aa.txt",path4);

        //实际上也是通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)
        File file5=new File("D:\\Code\\ideaCode\\FileTestDemo");
        String path5="aa.txt";
        File file6=new File(file3,path5);
    }

二、File的创建

方法名说明
boolean createNewFile()创建一个文件
boolean mkdir()创建一个文件夹
boolean mkdirs创建一个多级文件夹

2.1 创建一个文件

我们在这里创建一个aa.txt文本文件,初始无aa.txt文件存在

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明一个文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa.txt");
        //创建文件(若文件已存在,则返回false,否则返回true)
        boolean newFile = file.createNewFile();
        System.out.println(newFile);
    }

运行结果:
在这里插入图片描述


2.2 创建一个文件夹

我们在这里创建一个名为bb的单级文件夹,初始无bb单级文件夹存在

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明一个单级文件夹
        File file1=new File("D:\\Code\\ideaCode\\FileTestDemo\\bb");
        //创建单级文件夹(若文件夹已存在,则返回false,否则返回true)
        boolean mkdir = file1.mkdir();
        System.out.println(mkdir);
    }

运行结果:

在这里插入图片描述


2.3 创建一个多级文件夹

我们在这里创建一个名为cc的多级文件夹,初始无cc多级文件夹存在

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明一个多级文件夹
        File file2=new File("D:\\Code\\ideaCode\\FileTestDemo\\cc\\aa\\bb\\dd\\ee");
        //创建多级文件夹
        boolean mkdirs = file2.mkdirs();
        System.out.println(mkdirs);
    }

运行结果:

在这里插入图片描述


三、File的删除

调用delete()方法仅能删除文件和空文件夹,若一个文件夹中含有文件或者文件夹,则需要将文件夹中的文件和文件夹清空,使之成为空文件夹才能将之删除。

方法名说明
boolean delete()删除一个文件或者空文件夹

删除我们刚刚创建的bb空文件夹

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明bb文件夹
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\bb");
        //调用delete()方法删除bb空文件夹
        boolean delete = file.delete();
        System.out.println(delete);
    }

运行结果:
在这里插入图片描述


删除我们刚刚创建的aa.txt文件

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明aa.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa.txt");
        //调用delete()方法删除aa.txt文件
        boolean delete = file.delete();
        System.out.println(delete);
    }

运行结果:
在这里插入图片描述


删除我们刚刚创建的cc多级文件夹(直接调用delete()方法无法删除cc多级文件夹,因为cc多级文件夹并不是空文件夹)

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明cc多级文件夹
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\cc");
        //调用delete()方法无法直接删除cc多级文件夹
        boolean delete = file.delete();
        System.out.println(delete);
    }

运行结果:
在这里插入图片描述


四、File的获取与判断

方法名说明
File[] listFiles()获取一个文件夹孩子层所有文件和文件夹,并存入数组
boolean isFile()判断一个File对象是否为文件
boolean isDirectory()判断一个File对象是否为文件夹
boolean exists()判断一个File对象是否存在
String getName()获取当前File对象的全名(包括后缀名)

4.1 获取一个文件夹孩子层所有文件和文件夹,并存入数组

我们来遍历一个aa非空文件夹,aa非空文件夹孩子层所有文件及文件夹如下图所示:

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明aa非空文件夹
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa");

        //调用listFiles()方法获取aa文件夹孩子层所有文件和文件夹
        File[] files = file.listFiles();
        //使用forEach()语句遍历File数组
        for (File file1 : files) {
            System.out.println(file1);
        }
    }

运行结果:
在这里插入图片描述


4.2 判断一个File对象是否为文件

我们先来判断aa.txt它是不是一个文件

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明aa.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa.txt");

        //调用isFile()方法判断对象是否为文件
        boolean file1 = file.isFile();
        System.out.println(file1);
    }

运行结果:
在这里插入图片描述


我们再来判断bb.txt它是不是一个文件(无意外,它不是一个文件)

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明bb.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\bb.txt");

        //调用isFile()方法判断对象是否为文件
        boolean file1 = file.isFile();
        System.out.println(file1);
    }

运行结果:
在这里插入图片描述


4.3 判断一个File对象是否为文件夹

我们来判断bb.txt它是不是一个文件夹。

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明bb.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\bb.txt");

        //调用isDirectory()方法判断对象是否为文件夹
        boolean directory = file.isDirectory();
        System.out.println(directory);
    }

运行结果:
在这里插入图片描述


4.4 判断一个File对象是否存在

exists()方法可以判断一个File对象是否存在(不论是文件还是文件夹均可判断),我们声明一个虚假的cc.txt文件,来判断它是否存在。结果为不存在。

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明cc.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\cc.txt");

        //调用exists()方法判断File对象是否存在
        boolean exists = file.exists();
        System.out.println(exists);
    }

运行结果:
在这里插入图片描述


4.5 获取当前File对象的全名(包括后缀名)

public static void main(String[] args) throws IOException {
        //声明cc.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\cc.txt");

        //调用getName()方法获取当前File对象的全名(包括后缀名)
        String name = file.getName();
        System.out.println(name);
    }

运行结果:
在这里插入图片描述


五、File案列练习(根据文件类型分类)

获取一个非空文件夹孩子层所有文件及文件夹,并按照后缀名来对它们进行划分,并统计各个类型文件数量(因此我们无需查看文件夹,只需查看孩子层文件即可)

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明aa非空文件夹
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa");
        //创建Key值类型为String,Value值类型为Integer的Map集合,其中Key表示文件类型,Value表示此文件类型的数量
        Map<String,Integer> map=new HashMap<>();
        //调用listFiles()方法读取aa非空文件夹孩子层所有文件及文件夹
        File[] files = file.listFiles();
        //遍历File数组
        for (File file1 : files) {
            //若此对象为文件,对它文件类型进行划分
            if(file1.isFile()){
                //获取此文件全名(包括后缀名)
                String nameAll=file1.getName();
                //将文件名按"."进行分割,存入String数组中
                String[] nameArr=nameAll.split("\\.");
                //获取文件后缀名(文件的后缀名一定为最末尾元素)
                String nameLast=nameArr[nameArr.length-1];
                //如果集合中存在此文件类型
                if(map.containsKey(nameLast)){
                    //通过文件类型获取此文件类型的数量
                    int count=map.get(nameLast);
                    //数量加1
                    count++;
                    //更新文件类型的数量
                    map.put(nameLast,count);
                }else{
                    //若集合中不存在此文件类型,则将此文件类型存入集合中,数量为1
                    map.put(nameLast,1);
                }
            }
        }

        //普通方法输出集合
        System.out.println(map);
    }

运行结果:
在这里插入图片描述


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值