1.前言

磁盘内存用掉太多,想查那些文件夹占的内存比较大,再找出没有用的文件去删除。

2.代码

  1. static void Main(string[] args)
  2. {
  3. while (true)
  4. {
  5. //指定文件夹下的每个子文件夹占空间的大小
  6. Console.WriteLine("--------------------查询指定路径下所有的子文件夹占空间大小-------------------");
  7. Console.WriteLine("请输入要查询的路径:");
  8. string Path = Console.ReadLine();
  9.  
  10. Dictionary<string,long> dic = new Dictionary<string, long>();
  11. //路径是否存在
  12. if (!Directory.Exists(Path))
  13. {
  14. Console.WriteLine("输入路径不存在,请输入正确的路径!");
  15. Console.WriteLine("");
  16. }
  17. else
  18. {
  19. //定义一个DirectoryInfo对象
  20. DirectoryInfo di = new DirectoryInfo(Path);
  21. //通过GetFiles方法,获取di目录中的所有文件
  22. foreach (FileInfo fi in di.GetFiles())
  23. {
  24. //把信息加入到字典中
  25. dic.Add(fi.FullName, fi.Length);
  26. }
  27. //获取di中所有的文件夹,并存到一个新的对象数组中
  28. DirectoryInfo[] dis = di.GetDirectories();
  29. if (dis.Length > )
  30. for (int i = ; i < dis.Length; i++)
  31. {
  32. long length = GetDirectoryLength(dis[i].FullName);
  33. dic.Add(dis[i].FullName, length);
  34. }
  35. //linq写法,对Dictionary按value排序
  36. var dicSort = from objDic in dic orderby objDic.Value descending select objDic;
  37. foreach (KeyValuePair<string,long> dic1 in dicSort)
  38. {
  39. //KB转为M 要/1024变K 再/1024变M
  40. Console.WriteLine(string.Format("{0}:{1}{2}", dic1.Key.ToString(), Math.Round(Convert.ToDouble(dic1.Value) / / , ),"M"));
  41. }
  42. }
  43. }
  44.  
  45. }
  46.  
  47. //指定文件夹占空间大小
  48. public static long GetDirectoryLength(string dirPath)
  49. {
  50. //判断给定的路径是否存在,如果不存在则退出
  51. if (!Directory.Exists(dirPath))
  52. return ;
  53. long len = ;
  54.  
  55. //定义一个DirectoryInfo对象
  56. DirectoryInfo di = new DirectoryInfo(dirPath);
  57.  
  58. //通过GetFiles方法,获取di目录中的所有文件的大小
  59. foreach (FileInfo fi in di.GetFiles())
  60. {
  61. len += fi.Length;
  62. }
  63.  
  64. //获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归
  65. DirectoryInfo[] dis = di.GetDirectories();
  66. if (dis.Length > )
  67. {
  68. for (int i = ; i < dis.Length; i++)
  69. {
  70. len += GetDirectoryLength(dis[i].FullName);
  71. }
  72. }
  73. return len;
  74. }

运行结果:

C#_IO操作_查询指定文件夹下的每个子文件夹占空间的大小的更多相关文章

  1. MATLAB读取一个文件夹下的多个子文件夹中的多个指定格式的文件

    MATLAB需要读取一个文件夹下的多个子文件夹中的指定格式文件,这里以读取*.JPG格式的文件为例 1.首先确定包含多个子文件夹的总文件夹 maindir = 'C:\Temp Folder'; 2. ...

  2. java批量解压文件夹下的所有压缩文件(.rar、.zip、.gz、.tar.gz)

    // java批量解压文件夹下的所有压缩文件(.rar..zip..gz..tar.gz) 新建工具类: package com.mobile.utils; import com.github.jun ...

  3. linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体[转]

    linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体 1.引用头文件#include<dirent.h> struct ...

  4. android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

    简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...

  5. 读取同一文件夹下多个txt文件中的特定内容并做统计

    读取同一文件夹下多个txt文件中的特定内容并做统计 有网友在问,C#读取同一文件夹下多个txt文件中的特定内容,并把各个文本的数据做统计. 昨晚Insus.NET抽上些少时间,来实现此问题,加强自身的 ...

  6. 将文件夹下的所有csv文件存入数据库

    # 股票的多因子分层回测代码实现 import os import pymysql # import datetime, time # from config import * database_ta ...

  7. 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

    题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...

  8. 【bat批处理】批量执行某个文件夹下的所有sql文件bat批处理

    遍历文件夹下所有的sql文件,然后命令行执行 for /r "D:\yonyou\UBFV60\U9.VOB.Product.Other" %%a in (*.sql) do ( ...

  9. MapReduce会自动忽略文件夹下的.开头的文件

    MapReduce会自动忽略文件夹下的.开头的文件,跳过这些文件的处理.

随机推荐

  1. Android 与Java 进程退出 killProcess与System.exit

    android所有activity都在主进程中,在清单文件Androidmanifest.xml中可以设置启动不同进程,Service需要指定运行在单独进程?主进程中的主线程?还是主进程中的其他线程? ...

  2. Linux-pthread如何设置线程的优先级

    设置线程优先级的函数: int pthread_setschedparam(pthread_t target_thread, int policy, const struct sched_param ...

  3. Linux16.04 LTS 环境下将cmake的项目转换成eclipse可导入可调试的工程项目

    Linux作为一个开源系统,其中的一个优势就是有效的将各种源码编译得到的库集合在一起,为项目的使用创建了便捷.通常情况下,我们在开发自己的开源项目时,喜欢使用cmake调用各种三方库,如opencv ...

  4. 非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry

    非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry Glenn Berry 曾承诺对这个脚本持续更新 -- SQL Server 2012 Diagnostic ...

  5. C和C++头文件大全

    C.传统 C++ #include <assert.h> //设定插入点#include <ctype.h>  //字符处理#include <errno.h>   ...

  6. spring4笔记----报错publicid systemid之间要有空格的解决方法

    <?xml version="1.0" encoding="GBK"?> <beans xmlns:xsi="http://www. ...

  7. C#方法重载(overload)方法重写(override)隐藏(new)

    一.重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同.这样才能通过传递不同的参数来决定到底调用哪一个. 值得注意的是,方法重载只有通过参数不同来判断调用哪个方法, ...

  8. Scrapy(爬虫框架)中,Spider类中parse()方法的工作机制

    parse(self,response):当请求url返回网页没有指定回调函数,默认的Request对象的回调函数,用来处理网页返回的response,和生成的Item或者Request对象 以下分析 ...

  9. contenteditable元素的placeholder输入提示语设置

    在某些情况下,textarea是不够用的,我们还需要显示一些图标或者高亮元素,这就需要用富文本编辑器,而富文本编辑器本质上是HTML元素设置了contenteditable. 然后可能需要像input ...

  10. SpringCloud之初识Robbin---负载均衡

    在上一篇中讲解Eureka注册中心的案例,我们启动了一个user-service,然后通过DiscoveryClient来获取服务实例信息,然后获取ip和端口来访问. 但是实际环境中,我们往往会开启很 ...