使用C获取文件夹中的文件列表

发布于 2024-09-28 12:54:14 字数 240 浏览 3 评论 0原文

例如,我有一个文件夹的路径

/我的文件夹

或在 Windows 中:

C:\我的文件夹

,我想获取该文件夹中所有文件的列表。我该如何在 C 中做到这一点?

C++ 和 C99 有什么不同吗?

如何获取其文件夹列表?

任何帮助表示赞赏。

I have path to a folder for example

/myfolder

or in Windows:

C:\myfolder

and I want to get a list of all files in that folder. How shall I do so in C?

Is it different in C++ or C99?

How can I get a list of its folders?

Any help is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

躲猫猫 2024-10-05 12:54:14

在 POSIX 操作系统中,您可以调用 opendir() 和 readdir()。在 Windows 中,您可以调用 _findfirst() 和 _findnext()。只需付出一点努力,您就可以将自己的 opendir() 和 readdir() 实现为 Windows 下的包装函数,以便您的应用程序代码可以在任何地方使用相同的 API。可以在此处找到相关示例。

In POSIX operating systems, you can call opendir() and readdir(). In Windows you can call _findfirst() and _findnext(). With a little effort you can implement your own opendir() and readdir() as wrapper functions under Windows, so that your application code can use the same API everywhere. An example of that can be found here.

梦里°也失望 2024-10-05 12:54:14

您可以使用 dirent.h 中声明的函数

dirent.h 是 C POSIX 中的标头
C 编程语言库
包含的结构
方便目录遍历。这
函数不是 C 的一部分
标准,但被认为
“伪标准”,通常是
在平台之间可移植。
http://en.wikipedia.org/wiki/Dirent.h< /a>


#include <dirent.h>

int main(int argc, char **argv)
{
    DIR *dir;
    struct dirent *de;

    dir = opendir("."); /*your directory*/
    while(dir)
    {
        de = readdir(dir);
        if (!de) break;
        printf("%i %s\n", de->d_type, de->d_name);
    }
    closedir(dir);
    return 0;
}

You can use the functions declared in dirent.h

dirent.h is the header in the C POSIX
library for the C programming language
that contains constructs that
facilitate directory traversing. The
function is not part of the C
standard, but is considered
"pseudo-standard" and is usually
portable between platforms.
http://en.wikipedia.org/wiki/Dirent.h

#include <dirent.h>

int main(int argc, char **argv)
{
    DIR *dir;
    struct dirent *de;

    dir = opendir("."); /*your directory*/
    while(dir)
    {
        de = readdir(dir);
        if (!de) break;
        printf("%i %s\n", de->d_type, de->d_name);
    }
    closedir(dir);
    return 0;
}
空气里的味道 2024-10-05 12:54:14

C++ 中最好的方法是使用 boost 文件系统。

至于 C,您将需要平台 API (POSIX/WinAPI)。

POSIX 文档 + 示例: http://www.opengroup.org/onlinepubs/009695399/函数/readdir.html

The best approach in C++ is using boost filesystem.

As for C, you will need platform API (POSIX/WinAPI).

POSIX documentation + example: http://www.opengroup.org/onlinepubs/009695399/functions/readdir.html

无人问我粥可暖 2024-10-05 12:54:14

查看我用 C/C++ 编写的 get_all_files_within_folder() 此处,我回答了与您类似的问题。它非常适合我。希望有帮助。

Check out the get_all_files_within_folder() I wrote in C/C++ here, which I answered a similar question as yours. It works perfectly for me. Hope it helps.

清秋悲枫 2024-10-05 12:54:14

这是经典任务,可能在 Kernigan & 中找到一个可能的解决方案。 Ritchie - C 编程语言(第 8.6 章)。
任务的本质是递归遍历目标文件夹及其子文件夹。

This is classical task, one possiple solution maybe find in Kernigan & Ritchie - The C programming Language (Chapter 8.6).
Essence of task is recursive traverse of target folder and its subfolders.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文