首页 > 解决方案 > 如何在 C 中获取当前工作目录中文件的详细信息?

问题描述

我正在尝试在 C 中显示我当前工作目录的文件,但是,我还需要包含这些文件的详细信息,例如创建日期及其文件大小。

有没有在 C 中执行此操作的函数?

到目前为止,这是我的代码:

int main(
    DIR *d;
    struct dirent *dir;
    d = opendir(".");
    if (d) {
        while ((dir = readdir(d)) != NULL) {
            printf("%s\n", dir->d_name);
        }
        closedir(d);
    }
}

标签: cdirent.h

解决方案


文件信息不是由 dirent 函数处理,而是由stat().

注意stat()需要路径名;将目录路径与来自 d​​irent 结构的文件名结合起来(使用strncat)将为您提供必要的参数。在这种特殊情况下,由于文件信息只需要当前工作目录中的文件,路径可以省略,文件名可以直接用作参数(stat()然后将在当前目录中查找文件)。

stat 结构具有您感兴趣的各种条目,例如st_size文件大小和st_ctime更改时间(注意后者是UNIX 时间,您可能希望将其转换为可读字符串)。


推荐阅读