如何在 C# 中获取文件夹大小? [复制]

2024-04-11

可能的重复:
如何在 C# 中获取目录大小(目录中的文件)? https://stackoverflow.com/questions/1118568/how-do-i-get-a-directory-size-files-in-the-directory-in-c

在 vbscript 中,获取以 GB 或 MB 为单位的文件夹大小非常简单:

Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim fSize = CInt((oFSO.GetFolder(path).Size / 1024) / 1024)
WScript.Echo fSize

在 C# 中,对于我的所有搜索,我所能想到的就是对所有子文件夹中的每个文件大小进行冗长、复杂的递归搜索,然后将它们全部添加到最后。

难道就没有别的办法了吗?


这个怎么样:

private static long GetDirectorySize(string folderPath)
{
    DirectoryInfo di = new DirectoryInfo(folderPath);
    return di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length);
}

from here https://stackoverflow.com/a/5942656/74757.

这将为您提供以字节为单位的大小;您必须将其“美化”为 GB 或 MB。

NOTE:这仅适用于 .NET 4+。

EDIT:更改了通配符搜索"*.*" to "*"根据我链接的线程中的评论。这应该将其可用性扩展到其他操作系统(例如,如果使用 Mono)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中获取文件夹大小? [复制] 的相关文章

随机推荐

  • 在一个 Eclipse 项目中集成 Java 和 Python 代码

    我正在使用 Eclipse 和 PyDev 用 Python 编写一个编译器 我已经到了需要用 Java 编写一些代码的阶段 我在想是否有办法将它们合并到一个项目中 因为目前我有两个独立的项目 每当我需要更改Java代码时 我都必须手动将
  • 当我尝试运行测试时,为什么会收到“分段错误”错误?

    我编写了一个函数来确定是否分配默认值 如果标志不存在 它分配默认值 如果标志存在 它分配用户传递的值 我正在尝试用字符串测试我的函数 看看它是否确实给了我正确的数字 当我尝试运行测试时 我不断收到 分段错误 它可以编译 但测试就是不起作用
  • Python 中列表的切片

    我需要对列表列表进行切片 A 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 idx slice 0 4 B A idx 上面的代码没有给我正确的输出 我想要的是 1 2 3 1 2 3 1 2 3 使用切片对象很少比使用列表理
  • Java中如何获取真实的字符串高度?

    我在用着FontMetrics getHeight 获取字符串的高度 但它给了我一个错误的值 切断了字符串字符的下降部分 有更好的功能我可以使用吗 The getStringBounds 下面的方法是基于GlyphVector对于当前的Gr
  • 如何为 Laravel 5.2 雄辩模型编写“重复键更新”?

    我有一张桌子 它的唯一键是app id channel id但它没有主键 我想用on duplicated key update插入 更新的语句last update time领域在Laravel雄辩的模型 我发现updateOrCreat
  • 我可以控制网络浏览器的加载图标吗?

    我可以使用 JavaScript 控制浏览器的加载状态吗 也就是说 我希望浏览器显示其本机 加载 动画 而不是页面中我自己的加载图标 而是在浏览器加载页面时显示的图标而不是图标 您可以让浏览器加载一些页面 例如在不可见的 iframe 中
  • 无法在发布文件中找到预期的条目“main/binary-i386/Packages”(错误的sources.list条目或格式错误的文件)

    我试图在我的 Ubuntu 14 04 上升级 VLC 播放器 以下是我执行过的命令 https askubuntu com questions 105587 how to update vlc to the latest version
  • 有没有办法用 java 8 流更改日期格式?

    我想更改日期格式 dd mm yyyy to yyyy mm dd java8 流中的一行 List
  • 如果由于某种原因我必须停止迭代,在 Matlab 中保存结果的有效方法是什么?

    我试图通过运行迭代来最小化我的目标函数 这可能需要很长时间 可能是一天或更长时间 如果由于某种原因我必须停止程序或者它被挂起 那么保存迭代结果的有效方法是什么 这些迭代可能一直运行到程序因某种原因停止时 我要保存的变量是 best obj
  • 如何在 C# .NET core 控制台程序中指定 AWS 凭证

    我正在尝试测试 NET Core 控制台程序以将消息发布到 SNS 由于我在尝试让它在 Lambda 中工作时遇到问题 因此我想在非 Lambda 环境中尝试一下 在 Lambda 中 安全性由角色负责 但在控制台程序中 我认为我必须以某种
  • VS 2012 中的显式模板声明/定义

    以下代码声明一个模板 声明一个显式实例化定义 然后声明一个显式实例化声明 template
  • 在 Javascript 中将函数应用于 Null

    为什么以下工作有效 function sum a b return a b var result sum call null 3 4 7 为什么要定义结果 我调用 sum 作为 null 的方法 但 null 不是对象 不能有属性 到底是怎
  • 文件准备好澄清了吗?

    我最近看到一些使用这种模式的网站 这让我想到了一些陷阱
  • jquery中将多个数组合并为一个数组

    我正在尝试使用 jquery 将多个数组合并到一个数组 我知道我们可以使用 jquery merge 函数将两个数组合并为一个 我们也可以循环遍历这些数组并将它们连接到一个数组中 但我只是想知道是否有其他方法可以在不使用任何循环的情况下实现
  • IoC 容器本身的单元测试

    我认为以前没有人问过这个问题 尽管搜索这样的术语确实很困难单元测试ioc容器并且没有找到有关如何实现 IoC 以便执行单元测试的问题 我想对 IoC 容器本身进行单元测试 基本上是因为有时我会遇到容器问题 就像应用程序的任何其他部分一样 并
  • 使用类型提示时无法传递 null 参数

    以下代码 class Type function foo Type t foo null 运行时失败 PHP 致命错误 传递给 foo 的参数 1 不能为 null 为什么不允许像其他语言一样传递null PHP 7 1 或更高版本 201
  • 如何使用adb shell输入来输入&符号?

    adb shell input text 不起作用 也不行adb shell input keyevent KEYCODE AMPERSAND 相关问题 7789826 https stackoverflow com questions 7
  • Android约束布局水平划分

    我正在处理一个 Android 项目 我使用了ConstraintLayout 我想将布局设计为两个保持水平线的块 每个块将获得 50 的宽度 我怎样才能做到这一点ConstraintLayout 有两种方法可以做到这一点 使用链约束 使用
  • 如何在卡西欧 fx-991ES 计算器中计算 Mod b

    有谁知道如何在卡西欧 fx 991ES 计算器中计算 Mod b 谢谢 该计算器没有任何模函数 然而 有一种非常简单的方法可以使用显示模式来计算模数ab c 而不是传统的d c 如何切换显示模式ab c Go to settings Shi
  • 如何在 C# 中获取文件夹大小? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中获取目录大小 目录中的文件 https stackoverflow com questions 1118568 how do i get a directory size files i