`

java统计磁盘文件和文件夹大小

    博客分类:
  • java
 
阅读更多

因为公司配置的SSD非常小(仅100G),经常出现磁盘不够用的情况,所以每次都得手动清理垃圾文件。

 

清理倒好,主要是找大的垃圾文件麻烦,清理少了又不够用。

 

so 现在写了个java程序,查看磁盘文件大小,并且按从大到小的顺序列出来。

 

源码如下:

 

 

package com.raycloud.test.tools;

import java.io.File;
import java.util.*;

/**
 *
 * 统计磁盘中文件的大小,并按从大到小排序
 * @Author : tangshengshan@raycloud.com
 * @Date : 2015/4/15 17:08
 * @From : raytest
 */
public class StatsFileSize {

    static long unitGB = 1024*1024*1024;
    static long unitMB = 1024*1024;
    static long unitKB = 1024;

    public static void main(String[] args) {


        File rootFile = new File("d:\\");
File files [] =rootFile.listFiles();
Map<String,Long> map= new HashMap<String, Long>();
        for(File file : files){
            long len = 0;
            if(file.isDirectory()){
                len = getDirFileLen(file.getPath());
}else{
                len = file.length();
}
            map.put(file.getName(), len);
}

        //排序
Set<Map.Entry<String,Long>> entrySet = map.entrySet();
List<Map.Entry<String,Long>> list = new ArrayList<Map.Entry<String, Long>>();
        for(Map.Entry<String,Long> entry : entrySet){
            list.add(entry);
}
        Collections.sort(list, new Comparator<Map.Entry<String, Long>>() {
            @Override public int compare(Map.Entry<String, Long> o1, Map.Entry<String, Long> o2) {
                return o2.getValue().compareTo(o1.getValue());
}
        });

        for(Map.Entry<String,Long> entry : list){
            //len trans for hman
long len = entry.getValue();
String strLen = "";
            if(len > unitGB){
                strLen = len / unitGB +"GB";
}else if(len > unitMB){
                strLen = len / unitMB +"MB";
}else if(len > unitKB){
                strLen = len / unitKB +"KB";
}else{
                strLen = len +"B";
}
            System.out.println(entry.getKey()+"  "+strLen);
}

    }

    /**
     * 获得文件夹长度
     * @param filePath
* @return
     */
public static long getDirFileLen(String filePath){
        File rootFile = new File(filePath);
        long resultLen = 0;
File files [] =rootFile.listFiles();
        if(files == null){
            return resultLen;
}
        for(File file : files){
            if(!file.isDirectory()){  //dir
resultLen += file.length();
}else{  //file
resultLen+=getDirFileLen(file.getPath());
}
        }
        return resultLen;
}
}
分享到:
评论

相关推荐

    编写一个java应用程序,将一个包含多个子目录和文件的目录复制到另外一个指定的目录下

    5. **统计信息**:在代码中看到的`num01`和`num02`变量用于统计目录中的文件夹和文件数量,而`size`变量用于统计目录的总大小。这些统计信息可以在程序执行过程中动态更新,以便用户了解复制进度。 6. **日期格式化...

    遍历磁盘路径

    在实际应用中,遍历磁盘路径可以用于多种用途,如文件备份、文件搜索、统计文件数量或大小、清理无用文件等。同时,需要注意处理可能的安全问题,比如访问权限、循环引用(目录循环包含自身)以及性能优化,尤其是在...

    分析文件目录,统计数据并以树形结构和图表的形式展示结果,也可以导出多种格式留存.zip

    【标题】中的“分析文件目录,统计数据并以树形结构和图表的形式展示结果,也可以导出多种格式留存”这部分描述,涉及到的是文件管理和数据分析的知识点。在计算机科学中,这通常指的是文件系统的操作、数据统计分析...

    代码行数统计工具

    此外,考虑到能够统计整个磁盘的文件行数,CountLines可能具有深度遍历目录的能力,并且可能有性能优化,以处理大量文件和大文件夹时不出现性能瓶颈。这对于大型项目或者源码仓库来说尤其重要,因为这些通常包含...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和数据库...

    实验1.zip

    ZIP是一种广泛使用的文件格式,因为它可以将多个文件打包成一个单一的文件,节省磁盘空间,同时便于分享和传输。 ZIP文件的工作原理是通过数据压缩算法来减小文件大小。这些算法,如DEFLATE或LZ77,寻找并消除文件...

    untitled.zip

    "untitled.zip" 是一个压缩文件,通常用于存储多个文件或文件夹,以便于传输和归档。这种格式在IT行业中非常常见,它使用了数据压缩算法来减小文件的大小。 1. **数据压缩**: 压缩文件如 ".zip" 是数据压缩技术的...

    get-disc-size.rar_size

    此外,`du`命令可以用来查看单个目录或文件所占用的空间,`du -sh *`会列出当前目录下所有文件和文件夹的大小。 在Mac OS中,我们可以使用`diskutil`命令行工具。`diskutil info /`将提供根目录所在卷的基本信息,...

    Android中Glide获取缓存大小并清除缓存图片

    Glide 获取缓存大小的方法有多种,但是这里主要介绍通过遍历文件夹内的文件进行缓存文件大小求和的方法。首先,需要获取位于内部和外部存储的缓存文件夹的文件夹名,可以通过 InternalCacheDiskCacheFactory.DEFAULT...

    DB4O管理工具

    DB4O(Database for Objects)是一款开源的对象数据库管理系统(Object-Relational Mapping,ORM),它允许开发者将Java或.NET对象直接存储到磁盘上,无需转换为传统的表和列的结构。DB4O的设计理念是简化数据存储,...

    毕业设计&课设--这是我的一个毕业设计.zip

    它通过数据压缩算法减小文件大小,节省磁盘空间。 2. **文件命名**:“kwan0203”这个文件名可能代表了项目的个人化标识或代码,可能是创建者的名字、日期或者项目的编号。在实际的IT项目中,合理的文件命名规范是...

    File-and-Folder-Compression-master

    总结,"File-and-Folder-Compression-master"是一个使用Java实现的文件和文件夹压缩工具,它运用了霍夫曼编码这一经典的数据压缩算法,能够在保持数据无损的前提下,有效地减小文件的大小,提高存储和传输效率。...

    2021-2022计算机二级等级考试试题及答案No.4831.docx

    14. 使用“排列图标”命令可按特定顺序排列文件和文件夹。 15. 错误,关闭窗口的快捷键通常是Alt+F4。 16. 事件不是由操作系统调用,而是由数据库管理系统中的定时器或特定条件触发。 17. 数据库管理系统是数据库...

    PL/SQL Developer 9.0 用户指南

    - **定义文件夹和链接**:创建文件夹并将文件或文件夹链接到这些文件夹中。 #### 十七、链接、窗口、数据库会话和事务 - **主链接**:用于与数据库建立初始连接。 - **链接窗口**:显示与特定链接关联的对象。 - **...

    PLSQL Developer使用手册

    - 包状态和JAVA会话状态:检查程序包的状态以及相关的JAVA会话。 - 查看结果集:查看测试执行后返回的数据。 - 查看DBMS_OUTPUT:输出PL/SQL程序中的调试信息。 - 查看HTP输出:用于调试Web程序的输出。 - 调试:...

    2021-2022计算机二级等级考试试题及答案No.15184.docx

    2. 文件和文件夹在资源管理器中可以按照日期、名称、大小、类型进行排序,这是基本的文件管理操作。 3. 计算机内部存储文字信息时,无论是字符还是符号,都是以二进制形式表示的,这是计算机处理数据的基本方式。 ...

    PSIprobe2.3.3-Zh(中).rar

    - 根据CPU和内存监控结果,调整JVM的堆大小和垃圾收集策略。 - 通过线程分析,优化并发处理能力,避免过多的线程竞争。 - 分析HTTP请求,优化慢速接口,提升用户体验。 - 观察数据库连接池,合理设置最大连接数...

Global site tag (gtag.js) - Google Analytics