程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#_IO操作_查詢指定文件夾下的每個子文件夾占空間的大小,

C#_IO操作_查詢指定文件夾下的每個子文件夾占空間的大小,

編輯:C#入門知識

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;
        }

運行結果:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved