Java中File类相关API的综合练习

不爱生姜不吃醋⭐️⭐️⭐️
声明:

🌻看完之后觉得不错的话麻烦动动小手点个赞赞吧👍

🌻如果本文有什么错误的话欢迎在评论区中指正哦💗

🌻与其明天开始,不如现在行动!💪

🌻大家的支持就是我最大的动力!冲啊!🌹🌹🌹

文章目录


🌴前言

本文章是关于Java中File类相关API的综合练习


🌴一、创建文件

1.题目描述

在当前模块下创建aaa文件夹,在aaa下创建a.txt。

2.代码参考

java 复制代码
import java.io.File;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException {
        //aaa文件夹下创建a.txt
        File f = new File("Demo\\aaa"); //我的模块文件名是Demo,根据需要修改
        f.mkdirs();

        File src = new File(f, "a.txt");
        boolean b = src.createNewFile();
        if (b) {
            System.out.println("创建成功!");
        } else {
            System.out.println("创建失败!");
        }

    }
}

🌴二、单个文件夹查找文件

1. 题目描述

定义一个方法,查找文件夹中是否有avi文件(不考虑子文件夹)

2.代码参考

java 复制代码
import java.io.File;

public class Test2 {
    public static void main(String[] args) {
        //定义方法,查找文件夹中是否有avi文件
        File file = new File("Demo");
        boolean b = getTxtFile(file);
        System.out.println(b);
    }
    public static boolean getAviFile(File file){
        File[] files = file.listFiles();
        for (File f : files) {
            if(f.isFile() && f.getName().endsWith(".avi")){
                return true;
            }
        }
        return false;
    }
}

🌴三.遍历磁盘查找文件

1.题目描述

查找电脑中所有的avi文件

2.代码参考

java 复制代码
import java.io.File;

public class Test3 {
    public static void main(String[] args) {
        //定义方法,查找电脑中所有的avi文件
        findAviFile();
    }
    //遍历所有磁盘
    public static void findAviFile(){
        File[] files = File.listRoots();
        for (File src : files) {
            findAviFile(src);
        }
    }

    //在磁盘中查找文件
    public static void findAviFile(File src) {
        File[] files = src.listFiles();
        if (files != null) {
            for (File file : files) {
                //如果是文件,直接打印
                //如果是文件夹,递归继续查找
                if (file.isFile()) {
                    if (file.getName().endsWith(".avi")) {
                        System.out.println(file);
                    }
                } else {
                    findAviFile(file);
                }
            }
        }
    }
}

🌴四.删除文件夹

1.题目描述

删除一个多级文件夹

2.代码参考

java 复制代码
import java.io.File;

public class Test4 {
    public static void main(String[] args) {
        //删除多级文件夹
        File src=new File("D:\\AAAJavaStudy\\Day19"); //这个文件夹中有多子文件夹和文件
        deleteFile(src);
    }
    public static void deleteFile(File src){
        File[] files = src.listFiles();
        if (files != null){
            for (File file : files) {
                if (file.isFile()){
                    file.delete();
                }else {
                    deleteFile(file);
                }
                src.delete();
            }
        }
    }
}

🌴五.统计文件夹大小

1.题目描述

统计一个文件夹的总大小

2.代码参考

java 复制代码
import java.io.File;

public class Test5 {
    public static void main(String[] args) {
        File src = new File("D:\\AAAJavaStudy");
        System.out.println(getLen(src));
    }

    public static long getLen(File src) {
        long len = 0;
        File[] files = src.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isFile()) {
                    len += file.length();
                } else {
                    len += getLen(file);
                }
            }
        }
        return len;
    }
}

🌴六.统计文件数量

1.题目描述

统计一个文件夹中每种文件个数并打印

2.代码参考

java 复制代码
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test6 {
    public static void main(String[] args) {
        File file=new File("D:\\AAAJavaStudy");
        System.out.println(getCount(file));

    }

    public static HashMap<String, Integer> getCount(File src) {
        HashMap<String, Integer> hm = new HashMap<>();
        File[] files = src.listFiles();

        for (File file : files) {
            //判断是文件还是文件夹
            if(file.isFile()){
                String[] arr = file.getName().split("\\.");
                //判断:添加有后缀名的文件
                if(arr.length>=2){
                    String endName = arr[arr.length - 1];
                    //添加
                    if (hm.containsKey(endName)){
                        Integer count = hm.get(endName);
                        count++;
                        hm.put(endName,count);
                    }else {
                        hm.put(endName,1);
                    }
                }
            }else {
                HashMap<String, Integer> sonMap = getCount(file);
                Set<Map.Entry<String, Integer>> entries = sonMap.entrySet();
                for (Map.Entry<String, Integer> entry : entries) {
                    String key = entry.getKey();
                    Integer value = entry.getValue();
                    if(hm.containsKey(key)){
                        Integer count = hm.get(key);
                        count+=value;
                        hm.put(key,count);
                    }else {
                        hm.put(key,value);
                    }
                }

            }
        }
        return hm;
    }
}

🌴总结

文章中代码的编写使用的是Java中的File和HashMap集合的知识,多加练习熟能生巧。

本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!


相关推荐
qq_406981033 分钟前
什么是顶层 const什么是底层const
开发语言·c++
Eider199822 分钟前
python基础语法之并发基础练习
开发语言·python
长不大的杨瑞杰26 分钟前
OpenCode v2 LSP 实战:内置语言服务器、自定义配置与诊断闭环
java·人工智能·typescript·lsp·opencode
#麻辣小龙虾#27 分钟前
网页布局css中flex+margin的组合布局技巧
开发语言·前端·javascript
云和数据.ChenGuang31 分钟前
python和java的try
java·开发语言·python
我是唐青枫31 分钟前
Kotlin Inheritance(继承)详解:语法、原理、实战 Demo
开发语言·kotlin
日日大王学编程32 分钟前
阿里巴巴开源 Data Agent(Text2SQL)项目全维度详解
java·ai·开源
Wang's Blog35 分钟前
Java 项目实战:交友项目 - 交友左滑右滑
java·交友
测试盐38 分钟前
spark作业日志定位过程
java·hadoop·spark
ly768942 分钟前
从 OpenAPI 到多语言 SDK 生成:Java 服务端契约漂移与生成器版本治理
java·开发语言·openapi·java 21·版本兼容·契约漂移·sdk 生成