Java 删除文件夹和计算文件夹大小

背景

本文介绍一个删除文件(夹)和计算文件夹大小的方法

开工

  • 删除文件
/**
 * 删除指定文件或文件夹及其下面的所有文件
 * @param file 文件或路径
 *
 * @return true: 当文件不存在时
 */
public static boolean deleteAllFiles(File file) {
    if (!file.exists()) {
        return true;
    }

    if (file.isFile()) {
        return file.delete();
    }

    File[] files = file.listFiles();
    if (files != null) {
        for (int i = 0; i < files.length; i++) {
            if (!deleteAllFiles(files[i])) {
                return false;
            }
        }
    }

    return file.delete();
}
  • 计算文件夹大小
/**
 * 获取文件/文件夹大小, 返回字节数
 * @param path
 * @return 大小
 */
public static long getLengthLong(String path) {
    long totalLength = 0;

    File file = new File(path);
    if (file.isFile()) {
        totalLength += file.length();
    } else {
        File[] files = file.listFiles();
        if (files != null) {
            for (File childFile : files) {
                totalLength += getLengthLong(childFile.getPath());
            }
        }
    }

    return totalLength;
}

/**
 * 获取文件大小, 返回字符串, 带单位, 如 1 MB
 * @param path 路径
 * @return 大小
 */
public static String getLengthStr(String path) {
    float lengthLong = getLengthLong(path);

    long kb = 1024;
    long mb = kb * 1024;
    long gb = mb * 1024;
    long tb = gb * 1024;

    String unit;
    float ret;
    DecimalFormat format = new DecimalFormat(".00");
    if (lengthLong < kb) {
        unit = "B";
        ret = lengthLong;
    } else if (lengthLong < mb) {
        unit = "KB";
        ret = lengthLong / kb;
    } else if (lengthLong < gb) {
        unit = "MB";
        ret = lengthLong / mb;
    } else if (lengthLong < tb) {
        unit = "GB";
        ret = lengthLong / gb;
    } else {
        unit = "TB";
        ret = lengthLong / tb;
    }

    return format.format(ret) + " " + unit;
}

总结

  1. file.listFiles() 列出指定 file 下的所有 file, 包括文件夹
  2. file.list() 列出指定 file 下的所有 filefilename, 包括文件夹

你可能感兴趣的:(Java 删除文件夹和计算文件夹大小)