用C#实现获取文件夹大小的源代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FileList
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine();
            long length = GetDirectoryLength(@"D:\Folder\碟四");
            Console.WriteLine(length.ToString("N0"));
            Console.WriteLine();
            long length2 = FileSize(@"D:\Folder\碟四");
            Console.WriteLine(length2.ToString("N0"));
            Console.WriteLine(DateTime.Now.Millisecond);
        }

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

 

用C#实现获取文件夹大小的源代码

上一篇:C# Socket编程


下一篇:C# 获取系统环境数据