我不知道如何使用 GLib(GIO?)列出给定目录中的所有文件(文件名?)。没有好的文档或教程。欢迎任何代码片段。如果使用 GLib 不可能(或太麻烦)执行此操作,是否有任何好的 C 或 C++ 第三方库可以执行此操作。除了 Boost.FileSystem,因为我在 minGw 上编译 boost.filesystem 时遇到了很多麻烦。当然还有“dirent.h”作为最后的手段,但它不是标准的,尽管它在 gnu gcc (mingw) 上受支持,但它不包含在 MSVC 工具链中。那么推荐使用dirent.h吗?欢迎任何好的解决方案。
注意:我不知道这应该标记为 c 还是 c++。我使用的是 C++,但 glib 是一个 C 库。
这是一个 GLib 示例,使用 g_dir_open 和 g_dir_read_name:
GDir *dir;
GError *error;
const gchar *filename;
dir = g_dir_open(".", 0, &error);
while ((filename = g_dir_read_name(dir)))
printf("%s\n", filename);
现在您使用 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)
}
}