美文网首页Android开发专栏
Java 删除文件夹和计算文件夹大小

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

作者: Noah牛YY | 来源:发表于2018-07-13 08:02 被阅读12次

    背景

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

    开工

    • 删除文件
    /**
     * 删除指定文件或文件夹及其下面的所有文件
     * @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 删除文件夹和计算文件夹大小

        本文链接:https://www.haomeiwen.com/subject/aegdpftx.html