Vala 获取文件修改日期

Vala get file modification date

我是 Vala 和 linux 编程的新手。

我正在尝试为给定文件夹枚举类似于 'stat' shell 实用程序的数据。 到目前为止,我得到的是:

int main (string[] args) {
    try {
        File directory = File.new_for_path (".");

        if (args.length > 1) {
            directory = File.new_for_commandline_arg (args[1]);
        }

        FileEnumerator enumerator = directory.enumerate_children (FileAttribute.TIME_MODIFIED, 0);

        FileInfo file_info;


        while ((file_info = enumerator.next_file ()) != null) {

          DateTime t = file_info.get_modification_date_time();

        }

    } catch (Error e) {
        stderr.printf ("Error: %s\n", e.message);
        return 1;
    }

    return 0;
}

控制台输出:

vala --pkg gio-2.0 --pkg glib-2.0 main3.vala 
main3.vala:16.24-16.59: error: The name `get_modification_date_time' does not exist in the context of `GLib.FileInfo?'

有人能指出我正确的方向吗? 谢谢

错误是说该方法不存在。查看 Valadoc.org 的 get_modification_date_time it shows this was introduced in GLib version 2.62. That version was released 2019 年 9 月 5 日。您的发行版可能尚未包含该版本。

您可以尝试更新您的 GLib 版本或使用现已弃用的 get_modification_time:

int main(string[] args) {
    if (args[1] == null) {
        stderr.printf("No filename given\n");
        return 1;
    }
    var file = GLib.File.new_for_path (args[1]);

    try {
        GLib.FileInfo info = file.query_info("*", FileQueryInfoFlags.NONE);
        print (info.get_modification_time().to_iso8601() + "\n");

        print ("\n\nFull info:\n");
        foreach (var item in info.list_attributes (null)) {
            print( @"$item - $(info.get_attribute_as_string (item))\n" );
        }
    } catch (Error error) {
        stderr.printf (@"$(error.message)\n");
        return 1;
    }
    return 0;
}