![](/img/trans.png)
[英](C++) How do i read all files of a directory and put their contents in a vector/std::list?
[英]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.