File类对文件的操作应用

1.在不存在的文件夹下创建文件
//在当前模块下aaa文件下ddd下eee中创建一个e.txt文件
public class Demo2 {
    public static void main(String[] args) throws IOException {
        File file = new File("day11_myFile\\aaa\\ddd\\eee");
        //createNewFile()建立文件需要文件夹存在
        //如果文件不存在,则先创建出来
         if(!file.exists()){
             file.mkdirs();
         }
         //存在后,则在文件目录下创建文件
        File file1 = new File(file, "e.txt");
        System.out.println(file1.createNewFile());
    }
}
打印结果:
------------------------------------------------------------------
true
2.删除一个文件夹里面的所有内容
//删除一个文件夹里面的所有内容
public class Demo3 {
    public static void main(String[] args) {
        //指定删除文件A的路径
        //File A = new File("C:\\A");
        //deleteDir(A);
    }
        //删除文件夹的方法【删除的内容不会进回收站,直接在硬盘抹除】
    private static void deleteDir(File dir) {
        //获取文件夹中的内容
        File[] files = dir.listFiles();//2.长度为0返回的数组无法遍历
        //删除
        for (File file : files) {
            //是文件,则直接删除
            if(file.isFile()){
                file.delete();
           //如果不是文件,则不能直接删除,需要先删除文件夹里面的文件
            }else {
                //删除文件夹里面的文件
                deleteDir(file);//1.所有文件删完之后则参数为空文件夹传入,返回值为0
            }
        }
        //循环结束,则文件夹里面的内容删除完毕,只需删除空的文件夹即可
        dir.delete();//3.跳过中间执行删除空文件夹完成要求
        //空文件夹删除层级有几层则执行几次【从最深的层级空文件夹开始,到A本身结束】
    }
}
3.统计一个文件夹里面所有文件的后缀名和所对应的次数
//统计一个文件夹里面所有文件的后缀名和所对应的次数
public class Demo4 {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        getCount(new File("day11_myFile\\aaa"), map);
        //打印集合查看结果
        System.out.println(map);
    }

    private static void getCount(File dir, HashMap<String, Integer> map) {
        //获取目标文件夹中的内容
        String dirName;//变量在参与运算之前必须赋初值[此处不需要]
        File[] files = dir.listFiles();
        //判断数组是否为空[避免文件夹中有文件无权限访问或者其他为空的情况]
       if(files==null){
           return;
       }
        for (File file : files) {
            //遍历拿到每一个元素,并判断是否为文件
            if (file.isFile()) {
                //如果为文件,则获取文件的扩展名并添加到集合中
                String[] strArr = file.getName().split("\\.");//因为.表示任意元素,所以需要加\\
                //切割数组的最后一个元素为文件后缀名,将其定义为键
                dirName = strArr[strArr.length - 1];
                //判断该文件后缀在集合中是否存在
                //如果存在,则将键对应的值加一再覆盖原来的
                if (map.containsKey(dirName)) {
                    //获取键对应的值+1
                    Integer value = map.get(dirName);
                    value = value + 1;
                    //覆盖
                    map.put(dirName, value);
                    //否则不存在,则直接添加,初始值为1
                } else {
                    map.put(dirName, 1);
                }
                //否则元素不为文件,则递归展开该文件夹,直到为文件再统计
            } else {
                getCount(file, map);
            }
        }
    }
}
打印结果:
----------------------------------------------------------------------
{txt=3, java=2}
4.写一个方法,求文件夹的大小
/*思路:下面的A文件夹的大小
		A文件夹
			- aa.txt文件
			- bb文件夹
				b1.txt
				b2.txt
	A的大小 = aa.txt大小 + bb文件夹大小*/
public class Demo6 {
    public static void main(String[] args) {
        //先指定操作文件
        File file = new File("day11_myIO\\aaa");
        long size = getSize(file);
        System.out.println(size);
    }

    private static long getSize(File dir) {
        long sum=0;
        //进入到文件内
        File[] files = dir.listFiles();
        //判断数组是否为空
        if(files==null){
            return sum;
        }
        //遍历得到每一个元素
        for (File file : files) {
            //判断是否为文件
            if(file.isFile()){
                //如果是,则得到文件的大小
                sum+=file.length();
                //如果不是则递归进入文件夹内部
            }else {
                sum+=getSize(file);
            }
        }
        return sum;
    }
}
打印结果:
-----------------------------------------------------------
126472134
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陪雨岁岁年年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值