我无法弄清楚如何使用GLib(GIO?)列出给定目录中的所有文件(文件名?)。没有好的文档或教程。任何代码片段都是受欢迎的。如果使用GLib执行此操作是不可能的(或太麻烦),是否有任何好的C或C ++第三方库来执行此操作。除了Boost.FileSystem,因为我在minGw上编译boost.filesystem时遇到了很多麻烦。当然“dirent.h”作为最后的手段,但它不是标准的,虽然它在gnu gcc(mingw)上受支持,但它不包含在MSVC工具链中。那么建议使用dirent.h吗?欢迎任何好的解决方案。
注意:我不知道这是否应标记为c或c ++。我使用的是c ++,但glib是一个c库。
答案 0 :(得分:6)
如果您正在寻找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);
答案 1 :(得分:0)
在POSIX系统上,是的,我相信opendir
/ readdir
/ closedir
以及相关的dirent
结构是您所需要的。在Win32上,不太确定,但也许this helps?
答案 2 :(得分:0)
如今,您为此使用了Gio。 Here is an example来自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)
}
}