要实现该功能,可以使用C#内置的System.IO命名空间下的DirectoryInfo类和FileInfo类。下面是详细的步骤:
- 使用DirectoryInfo类创建文件夹的实例。
DirectoryInfor dirInfo = new DirectoryInfo(@"C:\Users\Administrator\Desktop\ExampleFolder");
- 使用FileInfo类获取文件夹下所有文件的信息并累加它们的大小。
long folderSize = 0;
foreach (FileInfo file in dirInfo.GetFiles("*.*", SearchOption.AllDirectories))
{
folderSize += file.Length;
}
其中,dirInfo.GetFiles()方法返回指定文件夹中所有文件的一个数组,'.'表示获取所有类型的文件,SearchOption.AllDirectories表示包括指定文件夹及其所有子文件夹。
- 将folderSize转换为人类可读的格式,如:KB、MB、GB等。
string[] sizes = { "B", "KB", "MB", "GB", "TB" };
int index = 0;
double size = folderSize;
while (size >= 1024 && index < sizes.Length - 1)
{
size /= 1024;
index++;
}
string formattedSize = $"{size:0.##} {sizes[index]}";
这里使用了一个字符串数组存储文件大小单位的后缀,循环计算folderSize的值并逐级缩小,直到压缩到1KB以下,然后使用字符串插值创建格式化字符串输出。
示例1:计算当前Windows登录用户的桌面上所有文件和文件夹的大小
DirectoryInfo dirInfo = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
long folderSize = 0;
foreach (FileInfo file in dirInfo.GetFiles("*.*", SearchOption.AllDirectories))
{
folderSize += file.Length;
}
string[] sizes = { "B", "KB", "MB", "GB", "TB" };
int index = 0;
double size = folderSize;
while (size >= 1024 && index < sizes.Length - 1)
{
size /= 1024;
index++;
}
string formattedSize = $"{size:0.##} {sizes[index]}";
Console.WriteLine($"Desktop size: {formattedSize}");
示例2:计算指定路径下某文件夹的大小
DirectoryInfo dirInfo = new DirectoryInfo(@"D:\MyFolder");
long folderSize = 0;
foreach (FileInfo file in dirInfo.GetFiles("*.*", SearchOption.AllDirectories))
{
folderSize += file. Length;
}
string[] sizes = { "B", "KB", "MB", "GB", "TB" };
int index = 0;
double size = folderSize;
while (size >= 1024 && index < sizes.Length - 1)
{
size /= 1024;
index++;
}
string formattedSize = $"{size:0.##} {sizes[index]}";
Console.WriteLine($"MyFolder size: {formattedSize}");
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#获取文件夹所占空间大小的功能 - Python技术站