首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C中获取目录的大小?

要在C语言中获取目录的大小,可以使用以下方法:

  1. 使用 opendirreaddir 函数遍历目录中的所有文件和子目录。
  2. 对每个文件和子目录,使用 stat 函数获取其大小和类型。
  3. 累加所有文件和子目录的大小,得到目录的总大小。

以下是一个示例代码:

代码语言:c
复制
#include <dirent.h>
#include <sys/stat.h>
#include<stdio.h>

long long get_directory_size(const char *path) {
    long long size = 0;
    struct dirent *entry;
    DIR *dir = opendir(path);

    if (dir == NULL) {
        perror("Failed to open directory");
        return -1;
    }

    while ((entry = readdir(dir)) != NULL) {
        struct stat statbuf;
        const char *entry_path = entry->d_name;
        lstat(entry_path, &statbuf);

        if (S_ISREG(statbuf.st_mode)) {
            size += statbuf.st_size;
        } else if (S_ISDIR(statbuf.st_mode)) {
            if (strcmp(entry_path, ".") != 0 && strcmp(entry_path, "..") != 0) {
                size += get_directory_size(entry_path);
            }
        }
    }

    closedir(dir);
    return size;
}

int main() {
    const char *path = ".";
    long long size = get_directory_size(path);
    printf("Directory size: %lld bytes\n", size);
    return 0;
}

这个代码示例定义了一个 get_directory_size 函数,它接受一个目录路径作为参数,并返回该目录的大小(以字节为单位)。在 main 函数中,我们调用这个函数并打印结果。

需要注意的是,这个代码示例可能会遇到符号链接循环的问题,因为它会递归地遍历所有子目录。如果目录中存在循环符号链接,这个函数可能会陷入死循环。为了避免这个问题,可以使用 fts 函数族代替 opendirreaddir 函数,或者使用一个哈希表来记录已经访问过的目录。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在 Linux 查看目录大小

这是一篇关于如何通过一些常用命令,显示 CentOS 或 RedHat Linux 目录大小,以及哪些文件夹占用空间最大教程。...- 按文件大小排序(再次按降序排列); C - 按项目数(即该目录文件总数)排序(再次按降序排列); c...百分比是相对于当前目录大小,图是相对于当前目录最大项目; e - 显示/隐藏“隐藏”或“排除”文件和目录。...请注意,即使看不到隐藏文件和目录,它们也仍然存在,并且仍包含在目录大小; i - 显示有关用法和大小突出显示项目信息; r...结论 您所见,Linux 目录大小可以通过多种不同方法来确定,如果您还有其他一些经常使用相关命令,欢迎在下面的评论添加。

12.9K20

C语言获取当前输出窗口大小

很多同学在学习C语言,只是局限于课本知识学习及应用,课本上练习题做了不少,可一旦遇到实际应用问题,就感到无从下手。 以下就简单就printf函数进行分析。   ...;    }      以上函数是众多教科书上经典实例,这一点地球人都知道!     ...C程序输出结果是在标准输出设备上,通常情况下,在Win环境下,其输出在一个字符窗口上,现在试问,如何得到该字符输出窗口大小,也即该窗口容纳多少字符,?行 * ?列。     ...显然,如果我们将要输出字符加长,则计量在满一行中所显示字符,则很容易测出一行所占用字符数。...main() {   printf("\n");   for ( int i=1;i<=10;i++)     printf("0123456789"); }    同理,按此方法我们可以得到窗口所容纳字符行数

3.2K00

C#获取目录方法集合

获取目录,它由程序集冲突解决程序用来探测程序集  2、取得Web应用程序目录方法      方法1、HttpRuntime.AppDomainAppPath.ToString();//获取承载在当前应用程序域中应用程序应用程序目录物理驱动器路径...用于App_Data获取      方法2、Server.MapPath("") 或者Server.MapPath("~/");//返回与Web服务器上指定虚拟路径相对物理文件路径      方法...();//获取或设置当前工作目录完全限定路径      2、Application.StartupPath.ToString();//获取启动了应用程序可执行文件路径,不包括可执行文件名称     ...1、Server.MapPath("/") 注:获得应用程序根目录所在位置, C:\Inetpub\wwwroot\。...4、Server.MapPath("~/") 注:获得当前应用级程序目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在位置,C:\Inetpub\wwwroot\Example\。

1.7K30

何在keras添加自己优化器(adam等)

本文主要讨论windows下基于tensorflowkeras 1、找到tensorflow目录 如果安装时使用anaconda且使用默认安装路径,则在 C:\ProgramData\Anaconda3...若并非使用默认安装路径,可参照根目录查看找到。 2、找到keras在tensorflow下目录 需要特别注意是找到keras在tensorflow下目录而不是找到keras目录。...一般来说,完成tensorflow以及keras配置后即可在tensorflow目录python目录中找到keras目录,以GPU为例keras在tensorflow下目录C:\ProgramData...# 传入优化器名称: 默认参数将被采用 model.compile(loss=’mean_squared_error’, optimizer=’sgd’) 以上这篇如何在keras添加自己优化器...(adam等)就是小编分享给大家全部内容了,希望能给大家一个参考。

44.8K30

dos批处理怎么获取for获取各个文件所在目录

注:%odr% 是一个目录(其目录下不确定有多少级目录),想实现功能: 历遍所有指定目录inf文件 已实现 获取此文件所在目录(比如%%i一个值为 c:\abc\XY\WS\ss.exe..., 怎样才能获取c:\abc\XY\WS\;如果%dr%=c:\,怎么才能获取到abc\XY\WS或者abc\XY\WS\) 两条命令就可以了。...dir H:\* /b /s /a|findstr "\.ini\>" 这样直接可以输出目录及所有子目录下全部.ini文件, 我们把这行命令单独保存成一个dirINI.bat 然后另外写个for循环,...) ) pause 【已解决】批处理命令for如何截取一个路径程序名字?...其中路径是不确定,就是要获取最后一个“\”后面的内容并赋值到变量到%sky%。

22830

c#获取当前运行程序所在目录

C#获取项目程序及运行路径方 1.asp.net webform用“Request.PhysicalApplicationPath获取站点所在虚拟目录物理路径,最后包含“\”; 2.c# winform...,获取这个文件路径所在目录即得到安装程序目录; 一、获取当前文件路径 1....”:获取当前应用程序文件路径,包含文件名称; C:“ AppDomain.CurrentDomain.BaseDirectory”:获取当前应用程序所在目录路径,最后包含“\”; D:“ System.Threading.Thread.GetDomain...备注 按照定义,如果该进程在本地或网络驱动器目录启动,则此属性值为驱动器名称后跟一个尾部反斜杠(C:\”)。...如果该进程在子目录启动,则此属性值为不带尾部反斜杠驱动器和子目录路径(C:\mySubDirectory”)。

3.7K10

PHP获取目录全部内容RecursiveDirectoryIterator

PHP获取目录全部内容RecursiveDirectoryIterator 这次我们来介绍一个SPL库目录迭代器,它作用其实非常简单,从名字就可以看出来,就是获取指定目录所有内容。.../source/PHP获取目录全部内容RecursiveDirectoryIterator.php // PHP获取目录全部内容RecursiveDirectoryIterator.php //.../PHP获取目录全部内容RecursiveDirectoryIterator.md // PHP获取目录全部内容RecursiveDirectoryIterator.md 其实就一行代码,然后直接循环输出这个迭代器...从结果我们可以看出,先进入 source 目录遍历完成后再遍历外部文件内容,按照目录、文件名顺序依次获取目录所有内容。是不是比我们自己写递归函数要方便很多。...如果我们想获取目录所有PHP文件,并且计算他们文件总大小呢?

1.4K20

IOS获取各种文件目录路径方法

由于应用程序必须经过签名,所以您在运行时不能对这个目录内容进行修改,否则可能会使应用程序无法启动。...您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序偏好. Caches 目录:用于存放应用程序专用支持文件,保存应用程序再次启动过程需要信息。...4、tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程不需要信息。...获取这些目录路径方法: 1,获取目录路径函数: NSString *homeDir = NSHomeDirectory(); 2,获取Documents目录路径方法: NSArray *paths...iphone沙盒(sandbox)几个目录获取方式: [cpp] view plain copy // 获取沙盒主目录路径   NSString *homeDir =

5.2K20

在keras 获取张量 tensor 维度大小实例

在进行keras 网络计算时,有时候需要获取输入张量维度来定义自己层。但是由于keras是一个封闭接口。因此在调用由于是张量不能直接用numpy 里A.shape()。这样形式来获取。...这里需要调用一下keras 作为后端方式来获取。当我们想要操作时第一时间就想到直接用 shape ()函数。其实keras 真的有shape()这个函数。...我们想要是tensor各个维度大小。因此可以直接调用 int_shape(x) 函数。这个函数才是我们想要。...()a 数据类型可以是tensor, list, array a.get_shape()a数据类型只能是tensor,且返回是一个元组(tuple) import tensorflow as...tensor 维度大小实例就是小编分享给大家全部内容了,希望能给大家一个参考。

2.9K20

何在git删除指定文件和目录

部分场景,我们会希望删除远程仓库(比如GitHub)目录或文件。...具体操作 拉取远程Repo到本地(如果已经在本地,可以略过) $ git clone xxxxxx 在本地仓库删除文件 $ git rm 我文件 在本地仓库删除文件夹 $ git rm -r...我文件夹/ 此处-r表示递归所有子目录,如果你要删除,是空文件夹,此处可以不用带上-r。...提交代码 $ git commit -m"我修改" 推送到远程仓库(比如GitHub) $ git push origin xxxxxx 补充: git rm 查看git rm说明文档: $ git...-n, --dry-run 演习 -q, --quiet 不列出删除文件 --cached 只从索引区删除 -f, --force 忽略文件更新状态检查 -r 允许递归删除 --ignore-unmatch

3.4K20

何在 React 获取点击元素 ID?

在 React 应用,我们经常需要根据用户点击事件来执行相应操作。在某些情况下,我们需要获取用户点击元素唯一标识符(ID),以便进行进一步处理。...本文将详细介绍如何在 React 获取点击元素 ID,并提供示例代码帮助你理解和应用这个功能。使用事件处理函数在 React ,我们可以使用事件处理函数来获取点击元素信息。...使用 ref除了事件处理函数,我们还可以使用 ref 来获取点击元素信息。通过创建一个引用(ref),可以在组件引用具体 DOM 元素,并访问其属性和方法。...在事件处理函数 handleClick ,我们可以通过 btnRef.current.id 来获取点击元素 ID。当用户点击按钮时,handleClick 函数会打印出点击元素 ID。...结论本文详细介绍了在 React 获取点击元素 ID 两种方法:使用事件处理函数和使用 ref。

3.1K30

内核根据进程Pid获取目录

目录 一丶简介 二丶原理 3.代码实现. 一丶简介 在内核中有时候想通过PID 获取进程全路径以达到监控作用 比如我们设置了进程回调.则可以根据PID看下进程全路径....二丶原理 原理就是在内核 通过 ZwQueryInformationProcess 这个未公开函数 进行查询. 查询好是 ** ProcessImageFileName ** 也就是27号功能....但是查询出来路径是Dos路径.还需要进行转化. 1.传入PID 使用 ZwOpenProcess打开PID获取Handle 2.使用ZwQueryInfomationProcess*27号功能(ProcessImageFileName...) 传入 ProcessHandle来获取路径. 3.代码实现. 1.首先是未公开函数获取....return STATUS_SUCCESS; } 因为暂时是做测试,所以并没有返回Buffer值. windbg查看. ? 可以看到已经获取了 calc全路径.

1.7K10

何在 Java 读取处理超过内存大小文件

读取文件内容,然后进行处理,在Java我们通常利用 Files 类方法,将可以文件内容加载到内存,并流顺利地进行处理。但是,在一些场景下,我们需要处理文件可能比我们机器所拥有的内存要大。...但是,要包含在报告,服务必须在提供每个日志文件至少有一个条目。简而言之,一项服务必须每天使用才有资格包含在报告。...使用所有文件唯一服务名称创建字符串列表。 生成所有服务统计信息列表,将文件数据组织到结构化地图中。 筛选统计信息,获取排名前 10 服务调用。 打印结果。...setDay 方法将 BitSet 与给定日期位置相对应位设置为 true。 allDaysSet 方法负责检查 BitSet 所有日期是否都设置为 true。...处理文件行主要过程比预期要简单。它从与serviceName关联compileMap检索(或创建)Counter,然后调用Counteradd和setDay方法。

10410

何在onCreate获取View高度和宽度

何在onCreate获取View高度和宽度 在开发过程中经常需要获取到View宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。...然而新手们经常在onCreate方法中直接调用上面两个方法得到值是0! 这是为什么呢? 因为View绘制是通过两个遍历来完成,一个measure过程,一个layout过程。...而这一切是发生在onCreate方法之后。所以在onCreate中直接使用View.getWidth()和View.getHeight()是无法得到正确。...那应该怎么onCreate获取View宽高呢?...开发者可以通过View.post()方法来获取到View宽高,该方法传递一个Runnable参数,然后将其添加到消息队列,最后在UI线程执行。

5.3K20
领券