Vala List Folder&子文件夹内容

时间:2018-05-23 05:54:02

标签: vala

我使用此代码将我的文件夹内容列为TreeView。

    try {
        string directory = "/home/malte/.password-store/";
        Dir dir = Dir.open (directory, 0);
        string? name = null;

        while ((name = dir.read_name ()) != null) {
            string path = Path.build_filename (directory, name);

            if (FileUtils.test (path, FileTest.IS_REGULAR)) {
                list_store.append (out iter);
                list_store.set (iter, 0, name);
            }
        }
    } catch (FileError err) {
        stderr.printf (err.message);
    }

这真的很完美。但我也要列出我的子文件夹内容。在子文件夹中也是文件夹。有人可以给我一个如何做到这一点的提示吗?

由于

1 个答案:

答案 0 :(得分:0)

只需让文件列出一个递归调用自身的函数。

Here is an example in C.

伪代码:

void list_files_recursive (string dir, List<string> filenames) {
   foreach (filename in dir) {
     if (file_is_dir(filename)) {
       list_files_recursive (filename, filenames);
     } else {
       filenames.add (filename);
     }
   }
}

至于如何将它们添加到树存储而不是列表存储是一个不同的问题,但我确定Vala和树存储的某些地方有例子。