File类练习

HeJin小于 1 分钟JavaIO流

打印目录下所有文件

public static void listFileTree(File file){
    if(file.isDirectory()){
        File[] files = file.listFiles();

        if(files == null){
            return;
        }

        for (File child : files) {
            if(child.isFile()){
                System.out.println(child.getAbsolutePath());
            }
            if(child.isDirectory()){
                listFileTree(child);
            }
        }
    }
}

获取目录大小

public static void main(String[] args) {
    File file = new File("E:\\音乐");
    Long size = getDirSize(file);
    BigDecimal bigDecimal = new BigDecimal(size / (1024 * 1024 * 1.0));
    BigDecimal ans = bigDecimal.setScale(0, RoundingMode.DOWN);
    System.out.println(ans + " MB");
}

/**
 * 获取文件夹大小
 * @param dir 文件夹
 */
public static Long getDirSize(File dir){
    Long size = 0L;
    
    if(dir.exists() && dir.isDirectory()){
        File[] files = dir.listFiles();
        // 空目录
        if(files == null){
            return 0L;
        }

        for (File file : files) {
            if(file.isDirectory()){
                size += getDirSize(file);
            } else {
                size += file.length();
            }
        }
    }

    return size;
}

递归删除文件夹

/**
 * 删除文件夹
 * @param path 文件路径
 */
public static void deleteDir(String path){
    File file = new File(path);

    if(file.exists() && file.isDirectory()){
        File[] files = file.listFiles();
        // 空目录
        if(files == null){
            return;
        }
        // 递归删除
        for (File dir : files) {
            if(dir.isDirectory()){
                deleteDir(dir.getAbsolutePath());
            } else {
                dir.delete();
            }
        }
    }

    file.delete();
}