代码如下:
/// <summary>
/// 获取文件夹大小
/// </summary>
/// <param name="dirPath"></param>
/// <returns></returns>
static long GetDirectorySize(string dirPath)
{
if (!System.IO.Directory.Exists(dirPath))
return 0;
long len = 0;
DirectoryInfo di = new DirectoryInfo(dirPath);
//获取di目录中所有文件的大小
foreach (FileInfo item in di.GetFiles())
{
len += item.Length;
}
//获取di目录中所有的文件夹,并保存到一个数组中,以进行递归
DirectoryInfo[] dis = di.GetDirectories();
if (dis.Length > 0)
{
for (int i = 0; i < dis.Length; i++)
{
len += GetDirectorySize(dis[i].FullName);//递归dis.Length个文件夹,得到每隔dis[i]
下面所有文件的大小
}
}
return len;
}
/// <summary>
/// 获取文件大小
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
static long GetFileSize(string filePath)
{
long temp = 0;
//判断当前路径是否指向某个文件
if (!File.Exists(filePath))
{
string[] strs = Directory.GetFileSystemEntries(filePath);
foreach (string item in strs)
{
temp += GetFileSize(item);
}
}
else
{
FileInfo fileInfo = new FileInfo(filePath);
return fileInfo.Length;
}
return temp;
}