java练习(十九) File类

1. 练习一

在当前模块下的 text 文件夹中创建一个 io.txt 文件

import java.io.File;
import java.io.IOException;

public class Practice1 {
    public static void main(String[] args) {
        File file = new File("D:\\kaifamiao");
        File file1 = new File(file, "text\\ebook\\IO");
        File text = new File(file1, "io.txt");
        // 判断文件夹是否存在,如果不存在则建立
        if (!file1.exists()) {
            boolean mkdir = file1.mkdirs();
            System.out.println(mkdir);  // true
        }
        try {
            text.createNewFile();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

2. 练习二

删除一个多级文件夹

public class Exam2 {
    public static void main(String[] args) {
        String path = "D:/Test/小说";
        File file = new File(path);
        if(deleteFolder(file)){
            System.out.println("删除成功");
        }else {
            System.out.println("删除失败");
        }
    }
    public static boolean deleteFolder(File file){
        if (!file.exists()) {
            return false;
        } else {
            try {
                File[] files = file.listFiles();
                if (files != null) {
                    for (File c : files) {
                        if (c.isDirectory()) {
                            deleteFolder(c);
                        } else {
                            c.delete();
                        }
                    }
                }
                return file.delete();
            } catch (Exception e) {
                System.out.println("删除文件夹出错: " + e.getMessage());
                return false;
            }
        }
    }
}

3. 练习三

统计一个文件夹中每种文件的个数并打印(不考虑目录)

public class Exam3 {
    //统计一个文件夹中每种文件的个数并打印(不考虑目录)
    public static void main(String[] args) {
        File file = new File("D:/Test");
        fileCount(file);
    }
    public static void fileCount(File file){
        if(file == null || !file.exists()){
            throw new RuntimeException();
        }
        HashMap<String, Integer> map = new HashMap<>();
        File[] files = file.listFiles();

        for(File f : files){
            if(f.isFile()){
                String name = f.getName();
                String[] split = name.split("\\.");
                String key = split[split.length-1];
                map.put(key,map.getOrDefault(key,0)+1);
            }
        }
        for (String key : map.keySet()) {
            System.out.println("文件扩展名: " + key + " 数量: " + map.get(key));
        }
    }
}

4. 练习四

计算出磁盘上指定文件夹的实际大小

public class Exam4 {
    //计算出磁盘上指定文件夹的实际大小
    public static void main(String[] args) {
        File dir = new File("D:/Test");
        long size = getDirSize(dir);
        System.out.println(size);

    }
    public static long getDirSize(File dir){
        if(dir == null && !dir.exists()){
            throw  new RuntimeException();
        }
        long size = 0;
        if(dir.isDirectory()){
            File[] files =dir.listFiles();
            for(File file :files){
                size += getDirSize(file);
            }
        }
        else {
            size += dir.length();
        }
        return size;
    }
}

5. 练习五

计算指定目录下所有文件大小

public class Exam5 {
    //计算指定目录下所有文件大小
    public static long getDirFileSize(File dir){
        if(dir == null || !dir.exists()){
            throw new RuntimeException();
        }
        long size = 0;

        File[] files = dir.listFiles((f) -> f.isFile());

        for(File file : files){
            size += file.length();
        }
        return size;
    }

    public static void main(String[] args) {
        File dir = new File("D:/Test");
        long size = getDirFileSize(dir);
        System.out.println(size);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值