C#获取文件夹所占空间大小的功能

要实现该功能,可以使用C#内置的System.IO命名空间下的DirectoryInfo类和FileInfo类。下面是详细的步骤:

  1. 使用DirectoryInfo类创建文件夹的实例。
 DirectoryInfor dirInfo = new DirectoryInfo(@"C:\Users\Administrator\Desktop\ExampleFolder");
  1. 使用FileInfo类获取文件夹下所有文件的信息并累加它们的大小。
long folderSize = 0;
foreach (FileInfo file in dirInfo.GetFiles("*.*", SearchOption.AllDirectories))
{
    folderSize += file.Length;
}

其中,dirInfo.GetFiles()方法返回指定文件夹中所有文件的一个数组,'.'表示获取所有类型的文件,SearchOption.AllDirectories表示包括指定文件夹及其所有子文件夹。

  1. 将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技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#在Entity Framework中实现事务回滚

    首先,在Entity Framework中,事务回滚是通过DbContext对象的Transaction属性和SaveChanges方法来实现的。 使用Transaction属性来开启和关闭事务,SaveChanges方法来提交对数据库的更改。如果在调用SaveChanges方法之前,对DbContext对象的Transaction属性调用了BeginTra…

    C# 2023年5月15日
    00
  • c#单例模式(Singleton)的6种实现

    单例模式(Singleton) 单例模式是一种创建型设计模式,它保证一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在需要确保有且仅有一个对象被创建时,使用单例模式就是最佳选择。 实现单例模式的六种方法 1. 饿汉式(饿汉式单例模式是线程安全的,极其简单) 饿汉式单例模式是指,在类加载的时候就创建一个对象实例,并且永久驻留在内存中,以供后续使用。…

    C# 2023年6月6日
    00
  • Net Core全局配置读取管理方法ConfigurationManager

    在本文中,我们将详细讲解如何在.NET Core中使用ConfigurationManager全局配置读取管理方法,并提供两个示例说明。 准备工作 在开始之前,您需要安装以下软件: .NET Core SDK 使用ConfigurationManager读取配置 在.NET Core项目中添加System.Configuration.Configuratio…

    C# 2023年5月16日
    00
  • C# WinForm实现Win7 Aero透明效果代码

    下面是详细讲解“C# WinForm实现Win7 Aero透明效果代码”的完整攻略: 1. 实现方法 要实现Win7 Aero透明效果,需要在WinForm程序中使用DWM(Desktop Window Manager)API。具体实现步骤如下: 1.1 定义API函数 在C#中使用DWM API需要使用P/Invoke方式。首先需要定义DWM API的函数…

    C# 2023年6月8日
    00
  • 使用C#配合ArcGIS Engine进行地理信息系统开发

    一、ArcGIS Engine ArcGIS Engine是ESRI公司出品的用于构建自定义GIS应用程序的开发包。ArcGIS Engine基于COM和现代.NET框架技术体系结构,具有高效、可扩展的GIS开发架构和丰富的应用开发资源和文档。ArcGIS Engine可与ArcGIS Server、ArcGIS for Desktop、ArcGIS Onl…

    C# 2023年6月1日
    00
  • C# 去除首尾字符或字符串的方法

    当处理字符串时,有时需要去掉字符串中的空格或特定字符,这时我们可以使用 C# 中提供的一些方法。下面我将为大家介绍一些去除首尾字符或字符串的方法。 去除空格 使用 Trim() 方法 C# 中的 Trim() 方法可以去除字符串首尾的空格,代码示例如下: string str = " hello world "; string trimS…

    C# 2023年6月8日
    00
  • ASP.NET Core MVC 修改视图的默认路径及其实现原理解析

    ASP.NET Core MVC 修改视图的默认路径及其实现原理解析 在ASP.NET Core MVC中,视图是用于呈现HTML内容的模板。默认情况下,视图文件存储在/Views文件夹中。但是,有时候需要将视图文件存储在不同的位置,例如在多个项目之间共享视图文件。本攻略将介绍如何修改ASP.NET Core MVC中视图的默认路径,并解析其实现原理。 步骤…

    C# 2023年5月17日
    00
  • 让Visual Studio用上chatgpt

        最近小编思维发散“Visual Studio可以集成chatgpt吗?”,这样不就可以让chatgpt帮你写代码了吗?寻觅了一圈,还真有这个东西,那就是一个Visual Studio的扩展插件:Visual chatGPT Studio,虽然不是官方的,部分功能也可以值得一用。本文将介绍Visual chatGPT Studio及它的使用案例。 一、…

    C# 2023年5月4日
    00
合作推广
合作推广
分享本页
返回顶部