zoukankan      html  css  js  c++  java
  • C#_IO操作_查询指定文件夹下的每个子文件夹占空间的大小

    1.前言

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

    2.代码

    static void Main(string[] args)
            {
                while (true)
                {
                    //指定文件夹下的每个子文件夹占空间的大小
                    Console.WriteLine("--------------------查询指定路径下所有的子文件夹占空间大小-------------------");
                    Console.WriteLine("请输入要查询的路径:");
                    string Path = Console.ReadLine();
    
                    Dictionary<string,long> dic = new Dictionary<string, long>();
                    //路径是否存在
                    if (!Directory.Exists(Path))
                    {
                        Console.WriteLine("输入路径不存在,请输入正确的路径!");
                        Console.WriteLine("");
                    }
                    else
                    {
                        //定义一个DirectoryInfo对象
                        DirectoryInfo di = new DirectoryInfo(Path);
                        //通过GetFiles方法,获取di目录中的所有文件
                        foreach (FileInfo fi in di.GetFiles())
                        {
                            //把信息加入到字典中
                            dic.Add(fi.FullName, fi.Length);
                        }
                        //获取di中所有的文件夹,并存到一个新的对象数组中
                        DirectoryInfo[] dis = di.GetDirectories();
                        if (dis.Length > 0)
                            for (int i = 0; i < dis.Length; i++)
                            {
                                long length = GetDirectoryLength(dis[i].FullName);
                                dic.Add(dis[i].FullName, length);
                            }
                        //linq写法,对Dictionary按value排序
                        var dicSort = from objDic in dic orderby objDic.Value descending select objDic;
                       foreach (KeyValuePair<string,long> dic1 in dicSort)
                       {
                           //KB转为M 要/1024变K 再/1024变M
                           Console.WriteLine(string.Format("{0}:{1}{2}", dic1.Key.ToString(), Math.Round(Convert.ToDouble(dic1.Value) / 1024 / 1024, 2),"M"));
                       }
                    }
                }
    
            }
            
    
            //指定文件夹占空间大小
            public static long GetDirectoryLength(string dirPath)
            {
                //判断给定的路径是否存在,如果不存在则退出
                if (!Directory.Exists(dirPath))
                    return 0;
                long len = 0;
    
                //定义一个DirectoryInfo对象
                DirectoryInfo di = new DirectoryInfo(dirPath);
    
                //通过GetFiles方法,获取di目录中的所有文件的大小
                foreach (FileInfo fi in di.GetFiles())
                {
                    len += fi.Length;
                }
    
                //获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归
                DirectoryInfo[] dis = di.GetDirectories();
                if (dis.Length > 0)
                {
                    for (int i = 0; i < dis.Length; i++)
                    {
                        len += GetDirectoryLength(dis[i].FullName);
                    }
                }
                return len;
            }

    运行结果:

  • 相关阅读:
    cnblog项目--20190309
    django js引入失效问题
    Python老男孩 day16 函数(六) 匿名函数
    Python老男孩 day16 函数(五) 函数的作用域
    Python老男孩 day15 函数(四) 递归
    Python老男孩 day15 函数(三) 前向引用之'函数即变量'
    Python老男孩 day15 函数(二) 局部变量与全局变量
    Python老男孩 day14 函数(一)
    Python老男孩 day14 字符串格式化
    Python老男孩 day14 集合
  • 原文地址:https://www.cnblogs.com/wei325/p/4969549.html
Copyright © 2011-2022 走看看