linux - 使用 Vala 列出文件夹内容

标签 linux glib vala

我正在尝试执行一项基本任务:将文件夹的内容列出到字符串数组或List<string>或可迭代的东西。但这似乎很棘手,我在 API 中找不到我需要的东西。

我当前的代码:

using GLib;
using Gtk;

class Demo.HelloWorld : GLib.Object {
    public static int main(string[] args) {
        File docsets = File.new_for_path (Environment.get_home_dir () + 
                "/.local/share/zeal/docsets");
        try {
            GDir* t = g_dir_open(Environment.get_home_dir ());
        } catch (FileError e) {
            stderr.printf ("%s\n", e.message);
        }
        stdout.printf(Environment.get_home_dir ()+"\n");
        stdout.printf("Hello, World\n");
        return 0;
    }
}

我正在编译:valac main.vala --pkg gtk+-3.0我收到以下错误:

main.vala:27.6-27.14: error: The type name `GLib.GDir' could not be found
                GLib.GDir* t = g_dir_open(Environment.get_home_dir ());

我试着看 https://developer.gnome.org/glib/2.42/glib-File-Utilities.htmlhttp://valadoc.org/#!api=glib-2.0/GLib.Log.FILE ,一开始看起来很简单。

感谢您的帮助。

对于更多的全局背景:我想尝试一下 Synapse (launchpad.net/synapse-project) 插件。

最佳答案

我终于在以下位置找到了一些示例:http://www.valadoc.org/#!api=glib-2.0/GLib.Dir

我有以下代码:

class Demo.HelloWorld : GLib.Object {
    public static int main(string[] args) {
        File docsets = File.new_for_path (Environment.get_home_dir () +
                "/.local/share/zeal/docsets");
        try {
            string directory = "./";
            Dir dir = Dir.open (directory, 0);
            string? name = null;
            while ((name = dir.read_name ()) != null) {
                string path = Path.build_filename (directory, name);
                string type = "";

                if (FileUtils.test (path, FileTest.IS_REGULAR)) {
                    type += "| REGULAR ";
                }
                if (FileUtils.test (path, FileTest.IS_SYMLINK)) {
                    type += "| SYMLINK ";
                }
                if (FileUtils.test (path, FileTest.IS_DIR)) {
                    type += "| DIR ";
                }
                if (FileUtils.test (path, FileTest.IS_EXECUTABLE)) {
                    type += "| EXECUTABLE ";
                }
                stdout.printf ("%s\t%s\n", name, type);
            }
        } catch (FileError err) {
            stderr.printf (err.message);
        }
        return 0;
    }
}

我希望这会对某人有所帮助。

关于linux - 使用 Vala 列出文件夹内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27702133/

相关文章:

vala - 如何读取 Vala 中的字符?

linux - 在汇编中拆分字符串

c - 找不到 glib.h 和 gtk.h

gtk - 构建 glib 给出错误 : gfileutils. c :57:25: error: linux/magic. h:没有这样的文件或目录

c++ - GLIB 安装后无法编译基本 GLIB 程序

vala:这是以毫秒为单位获取当前时间的正确方法吗?

oop - 非 Objective-C 语言中 'receiver' 的等效术语

windows - 安装 mpich2 时出错

linux - 在 AWS linux 上通过 yum 安装 MongoDB 失败 : HTTPS Error 404 - Not Found

json - 如何删除一 block 。使用 jq 来自 json 的代码?