2013-01-13 70 views

回答

4

这是通过List类中的sort(CompareFunc<G> compare_func)方法完成的。你可以阅读更多关于它here

字符串一个基本的例子将是:

list.sort((a,b) => { 
    return a.ascii_casecmp(b); 
}); 

传递给sort()函数的返回值是一样的ISO C90 qsort(3)功能:

比较函数必须返回一个如果第一个参数分别小于,等于或大于第二个参数,则小于,等于或大于零的整数。

正如你感兴趣的修改时,FileAttribute你要找的是TIME_MODIFIED,你会通过调用FileInfo适当get_attribute_*方法得到。

0
static int main (string[] args) { 
var directory = File.new_for_path ("/var/db/pkg"); 
var glib_list = new GLib.List<FileInfo>(); 
try { 
    var enumerator = directory.enumerate_children (FileAttribute.TIME_MODIFIED, FileQueryInfoFlags.NOFOLLOW_SYMLINKS); 
    FileInfo file_info; 
    while ((file_info = enumerator.next_file()) != null) { 
     glib_list.append(file_info); 
    } 
} catch(Error e) { 
    stderr.printf ("Error: %s\n", e.message); 
} 
// Lets sort it. 
CompareFunc<FileInfo> my_compare_func = (a, b) => { 
    long c = a.get_modification_time().tv_sec; 
    long d = b.get_modification_time().tv_sec; 
    return (int) (c > d) - (int) (c < d); 
}; 
glib_list.sort(my_compare_func); 
foreach (FileInfo file_info in glib_list) { 
    stdout.printf ("%s\n", file_info.get_name()); 
} 
return 0; 

}

相关问题