繁体   English   中英

如何使用 Glib(或任何其他库)列出目录中的所有文件?

[英]How do I use Glib (or Any other Library) to list all the files in a directory?

我不知道如何使用 GLib(GIO?)来列出给定目录中的所有文件(文件名?)。 没有好的文档或教程。 欢迎任何代码片段。 如果使用 GLib 无法(或太麻烦)执行此操作,是否有任何好的 C 或 C++ 第三方库可以执行此操作。 除了 Boost.FileSystem,因为我在 minGw 上编译 boost.filesystem 时遇到很多麻烦。 当然有“dirent.h”作为最后的手段,但它不是标准的,尽管 gnu gcc (mingw) 支持它,但它不包含在 MSVC 工具链中。 那么是否推荐使用dirent.h? 欢迎任何好的解决方案。

注意:我不知道这是否应该标记为 c 或 c++。 我使用的是 c++,但 glib 是 ac 库。

如果您正在寻找一个glib示例,那么就在这里。

GDir *dir;
GError *error;
const gchar *filename;

dir = g_dir_open(".", 0, &error);
while ((filename = g_dir_read_name(dir)))
    printf("%s\n", filename);

在 POSIX 系统上,是的,我相信opendir / readdir / closedir和相关的dirent结构是您所需要的。 在 Win32 上,不太确定,但也许这有帮助

现在你使用 Gio 来做这件事。 这是来自 GNOME Shell 的示例,使用 Javascript 绑定 gjs。 就像是:

    const directory = GLib.build_filenamev([ 'some', 'path']);

    try {
        fileEnum = directory.enumerate_children('standard::name,standard::type',
                                                Gio.FileQueryInfoFlags.NONE, null);
    } catch (e) {
        fileEnum = null;
    }
    if (fileEnum != null) {
        let info;
        while ((info = fileEnum.next_file(null))) {
            // Do something with info
            // or with fileEnum.get_child(info)
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM