递归统计一个文件夹的大小

啊哈哈哈哈哈!!!!



import java.io.File;

public class Work03 {
//	3.递归统计一个文件夹的大小
	
	public static void main(String[] args) {
		File file = new File("D:\\steamapps");
		//调用方法并输出
		System.out.println(sum(file));
		

	}
	//创建求文件大小的方法:
	//求文件的大小就是求文件夹里面的所有文件的大小
	public static long sum(File file){
		//定义一个累加器
		 long sum1=0;
		 //为了程序的严谨,首先判断flie对象是否为文件夹
		if(file.isDirectory()){
			//遍历文件里面所有的的文件夹和文件
			File[] listFiles = file.listFiles();
			//增强for进行循环
			for (File f2 : listFiles) {
				//判断是否为文件
				if(f2.isFile()){
					//吧文件的字节进行累加.
					//f2.length()求取文件的字节数
					sum1+=f2.length();
					}else{
						//累加
						sum1+=sum(f2);
						
					}
				}
		}else{
			System.out.println("真贱,请输入文件夹!!!!");
		}
	return sum1;
		
		
		
	}

}


<think>我们正在讨论如何查看特定文件夹大小。根据之前的引用和用户的问题,用户已经知道如何查看当前目录下每个文件夹大小,现在想知道如何查看某个特定文件夹大小。 根据引用[1]和引用[2]的内容,我们可以使用`du`命令(在Linux/Unix系统中)来查看文件夹大小。在Windows中,我们可以使用PowerShell脚本(如引用[3]所示)或者资源管理器,但用户的问题似乎更偏向于Linux环境(因为引用[1][2]都是关于Linux/AIX的),不过为了全面,我们可以同时提供Linux和Windows的方法。 具体方法如下: ### 1. Linux/Unix/MacOS 系统 使用终端命令: ```bash du -sh /path/to/directory ``` 其中: - `-s` 表示只显示总大小(不显示子目录详情) - `-h` 表示以人类可读的格式显示(如KB, MB, GB) - `/path/to/directory` 替换为你要查看的文件夹路径 例如,查看当前用户主目录的大小: ```bash du -sh ~ ``` ### 2. Windows 系统 方法一:使用资源管理器 - 打开资源管理器,找到该文件夹,右键单击选择“属性”,在属性窗口中可以看到文件夹大小。 方法二:使用PowerShell - 打开PowerShell,使用以下命令(类似于引用[3]中的方法,但这里针对单个文件夹): ```powershell Get-ChildItem 'C:\path\to\directory' -Recurse | Measure-Object -Property Length -Sum ``` 这个命令会递归计算该文件夹下所有文件的大小并求和。 或者,为了更直观地显示,可以这样: ```powershell $folder = 'C:\path\to\directory' $size = (Get-ChildItem $folder -Recurse | Measure-Object -Property Length -Sum).Sum Write-Host ("文件夹大小: {0:N2} GB" -f ($size / 1GB)) ``` 方法三:使用命令提示符(CMD) - 可以使用`dir`命令,但它不会递归统计,所以通常需要配合循环。不过,更推荐PowerShell。 ### 注意事项: - 在Linux中,`du`命令统计的是磁盘占用(可能因为文件系统块大小而略大于实际文件大小之和)[^2]。 - 在Windows中,上述PowerShell命令统计的是实际文件大小之和(与资源管理器显示的“大小”一致,但注意资源管理器属性中还有“占用空间”的概念,与文件系统分配单元有关)。 因此,根据用户的需求,如果是在Linux环境下,推荐使用`du -sh`命令;在Windows环境下,推荐使用PowerShell脚本或资源管理器。 引用[1]中提到了`df -h`可以查看整个磁盘的状态,而`du`则用于查看文件夹大小,两者用途不同[^1]。 如果用户需要查看特定文件夹下所有子目录的大小(而不仅仅是总大小),可以去掉`-s`选项,并指定递归深度,例如: ```bash du -h --max-depth=1 /path/to/directory ``` 这样会显示该目录下每个直接子目录的大小。 综上所述,查看特定文件夹大小的主要方法是: - Linux: `du -sh <目录路径>` - Windows: 使用资源管理器属性或PowerShell脚本 请用户根据自己所在的操作系统选择合适的方法。 §§相关问题§§ 1. 如何查看Linux中隐藏文件夹大小? 2. 在Linux中,`du`和`df`命令在磁盘统计上有何区别? 3. 如何定时监控Linux指定目录的磁盘使用变化? 4. 如何快速找到Linux中占用空间最大的文件夹或文件?</think>要查看特定文件夹大小,不同操作系统有不同的方法,以下是详细操作指南: ### Linux/MacOS 系统 ```bash # 查看指定文件夹大小 du -sh /path/to/your/folder # 示例:查看/home/user/Documents大小 du -sh ~/Documents ``` - **`-s`**:显示总大小(不递归显示子目录)[^1] - **`-h`**:人类可读格式(自动转换为KB/MB/GB) - **输出示例**:`5.2G /home/user/Documents` ### Windows 系统 #### 方法一:资源管理器(图形界面) 1. 右键点击目标文件夹 → 选择"属性" 2. 在"常规"标签页查看"大小"和"占用空间" #### 方法二:PowerShell(命令行) ```powershell # 查看指定文件夹大小(GB为单位) (Get-ChildItem 'C:\Your\Folder' -Recurse | Measure-Object -Property Length -Sum).Sum /1GB ``` #### 方法三:CMD命令提示符 ```cmd :: 查看文件夹大小(需管理员权限) dir /s "C:\Your\Folder" | find "File(s)" ``` ### 跨平台通用技巧 1. **查看包含子目录的大小** Linux: `du -h /path/to/folder` PowerShell: `Get-ChildItem -Path 'C:\Folder' -Recurse | Measure-Object -Property Length -Sum`[^3] 2. **排序子目录大小** ```bash du -h --max-depth=1 /path/to/folder | sort -h ``` 3. **排除特定文件类型** ```bash du -sh --exclude="*.tmp" /path/to/folder ``` ### 注意事项 1. Linux中`du`显示的是磁盘占用空间(包含文件系统元数据),可能与实际文件总和略有差异[^2] 2. 大目录扫描可能需要时间,添加`--time`参数查看耗时 3. Windows资源管理器显示的"大小"与"占用空间"不同,后者包含文件系统块大小开销 > 关键区别:`du`直接计算文件占用(引用[1]),而Windows资源管理器同时显示逻辑大小和物理占用(引用[3])[^1][^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值