【JAVA】文件储存——File

目录

【File类】

【创建File方法】

【File删除方法】

【File判断和获取方法】

【File高级获取方法】

【File类——示例项目】


【File类】

【概述】:是文件和目录路径名的抽象表示

【特点】:

  • 文件和目录可以通过File封装成对象
  • File封装的对象仅仅是一个路径名。它可以是存在的,也可以是不存在的。

【构造方法】:

File​(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例

File​(String parent, String child):从父路径名字符串和子路径名字符串创建新的File实例

File​(File parent, String child):从父抽象路径名和子路径名字符串创建新的File实例

例:

        //(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
        String path="G:\\JAVA\\a.txt";
        File file1=new File(path);
        System.out.println(file1);
        //File(String parent, String child):从父路径名字符串和子路径名字符串创建新的File实例
        String path1="G:\\JAVA";
        String path2="a.txt";
        File file2=new File(path1,path2);
        System.out.println(file2);
        //File(File parent, String child):从父抽象路径名和子路径名字符串创建新的File实例
        File file=new File("G:\\JAVA");
        String path3="a.txt";
        File file3=new File(file,path3);
        System.out.println(file3);

【创建File方法】

public boolean createNewFile():创建一个新的空的文件

【注意】:

  1. 如果文件存在,那么会创建失败,返回false
  2. 如果文件不存在,那么会创建成功,返回true
  3. createNewFile方法不管调用者有没有后缀名,只能创建文件

public boolean mkdir():创建一个单级文件夹

【注意】:

  1. 只能创建单级文件夹,不能创建多级文件夹
  2. 不管调用者有没有后缀名,只能创建文件夹

public boolean mkdirs():创建一个多级文件夹

【注意】:

  1. 既可以创建多级文件夹,也可以创建单级文件夹
  2. 不管调用者有没有后缀名,只能创建文件夹

例:

        File file4=new File("G:\\JAVA\\a.txt");
        boolean result = file4.createNewFile();
        System.out.println(result);
        File file5=new File("G:\\JAVA\\aaa");
        boolean result1=file5.mkdir();
        File file6=new File("G:\\JAVA\\aaa\\bbb");
        boolean result2=file6.mkdirs();
        System.out.println(result2);

【File删除方法】

public boolean delete​():删除由此抽象路径名表示的文件或目录

【注意】:

  • delete方法直接删除不走回收站。
  • 如果删除的是一个文件,直接删除。
  • 如果删除的是一个文件夹,需要先删除文件夹中的内容,最后才能删除文件夹。

例:

        File file=new File("G:\\JAVA\\a.txt");
        boolean result = file.delete();
        System.out.println(result);

【File判断和获取方法】

public boolean isDirectory():测试此抽象路径名表示的File是否为目录

public boolean isFile():测试此抽象路径名表示的File是否为文件

public boolean exists():测试此抽象路径名表示的File是否存在

public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串

public String getPath():将此抽象路径名转换为路径名字符串

public String getName():返回由此抽象路径名表示的文件或目录的名称

例:

        File file=new File("G:\\JAVA\\a.txt");
        //public boolean isDirectory():测试此抽象路径名表示的File是否为目录
        boolean result1 = file.isDirectory();
        System.out.println(result1);
        //public boolean isFile():测试此抽象路径名表示的File是否为文件
        boolean result2 = file.isFile();
        System.out.println(result2);
        //public boolean exists():测试此抽象路径名表示的File是否存在
        boolean result3 = file.exists();
        System.out.println(result3);
        //public String getName():返回由此抽象路径名表示的文件或目录的名称
        String result4 = file.getName();
        System.out.println(result4);

【File高级获取方法】

 public File[] listFiles():返回此抽象路径名表示的目录中的文件和目录的File对象数组

【注意】:

  • 当调用者不存在时,返回null
  • 当调用者是一个文件时,返回null
  • 当调用者是一个空文件夹时,返回一个长度为0的数组
  • 当调用者是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
  • 当调用者是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏内容
  • 当调用者是一个需要权限才能进入的文件夹时,返回null

例:

        File file=new File("G:\\JAVA");
        File[] files=file.listFiles();//返回值为file列表
        for (File path : files) {
            System.out.println(path);
        }

【File类——示例项目】

1、删除一个包含多个文件夹和文件的多级文件夹

 public static void main(String[] args) {
        File src=new File("G:\\ceshi");
        deleteDir(src);
    }
    private static void deleteDir(File src) {
        File[] files=src.listFiles();
        for (File file : files) {
            if(file.isFile()){
                file.delete();
            }else {
                deleteDir(file);
            }
        }
        src.delete();
    }

 2、统计一个文件夹中每种文件的个数并打印(利用循环和递归)

public static void main(String[] args) {
        File file=new File("stream_io");
        HashMap<String ,Integer> hm=new HashMap<>();
        getCount(hm,file);
        System.out.println(hm);
    }
    private static void getCount(HashMap<String, Integer> hm, File file) {
        File[] files=file.listFiles();
        for (File f : files) {
            if(f.isFile()){
                String fileName = f.getName();
                String[] fileNameArr = fileName.split("\\.");
                if(fileNameArr.length==2){
                    String fileEndName=fileNameArr[1];
                    if(hm.containsKey(fileEndName)){
                        //已经存在
                        //将已经出现的次数获取出来
                        Integer count = hm.get(fileEndName);
                        count++;
                        //覆盖之前的值
                        hm.put(fileEndName,count);
                    }else{
                        //不存在
                        //表示当前文件是第一次出现
                        hm.put(fileEndName,1);
                    }
                }
            }else {
                getCount(hm,f);
            }
        }
    }
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lx_Hy_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值