前言:程序集 System.IO.FileSystem下面的Directory,并通过递归计算指定文件夹的空间大小,如有不对的地方,请多多指教
流程
先判断地址, 然后再对文件夹进行递归操作,其实就是不断的查看文件夹下的文件,并对文件大小进行累加;
代码
static void Main(string[] args)
{
long rawLth = GetDirectoryLength(@"F:\data\audiovideo");
long lenkb = length / 1024;
Console.WriteLine(rawLth .ToString());
Console.WriteLine(lenkb.ToString()+"KB");
}
/// <summary>
/// 220126 komla 对文件夹的操作
/// </summary>
/// <param name="Path"></param>
/// <returns>文件夹大小,单位是字节</returns>
public static long GetDirectoryLength(string Path)
{
//判断给定的路径是否存在,如果不存在则退出
if (!Directory.Exists(Path))
return 0;
long len = 0;
//定义一个DirectoryInfo对象
DirectoryInfo dirInfo = new DirectoryInfo(Path);
//通过GetFiles方法,获取dirInfo目录中的所有文件的大小
foreach (FileInfo fi in dirInfo.GetFiles())
{
len += fi.Length;
}
//获取dirInfo中所有的文件夹,并存到一个新的对象数组中,以进行递归
DirectoryInfo[] dirs = dirInfo.GetDirectories();
if (dirs.Length > 0)
{
for (int i = 0; i < dirs.Length; i++)
{
len += GetDirectoryLength(dirs[i].FullName);
}
}
return len;
}
GetDirectoryLength函数获取的文件夹大小是对文件夹下所有文件进行求和,其单位是字节,但我们一般看到的磁盘大小什么的都是以KB或G显示,因此对函数返回结果进行单位换算就可以了。