您的位置:首页 > 编程语言 > C#

C#实现获取文件夹大小

2012-12-12 11:06 387 查看
        当然了都需要引入System.IO这个命名空间
        第一个:
          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;

         }
        第二个
         //也是利用递归的思想,只不过是通过File类的Exits方法来判断
         //所给路径中所对应的是否为文件
        public static long FileSize(string filePath)

         {

             long temp = 0;
             //判断当前路径所指向的是否为文件

             if (File.Exists(filePath) == false)

             {

                 string[] str1 = Directory.GetFileSystemEntries(filePath);

                 foreach (string s1 in str1)

                 {

                     temp += FileSize(s1);

                 }

             }

             else

             {
                //定义一个FileInfo对象,使之与filePath所指向的文件向关联,
                 //以获取其大小
                 FileInfo fileInfo = new FileInfo(filePath);

                 return fileInfo.Length;

             }

             return temp;

         }
        其实删除文件夹的思想与这个是一样的,设置要简单很多,只要简单的判断一下当前的是文件还是文件夹,如果是文件则删除.是文件夹则递归
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: