Vala List Содержимое папки и подпапки - PullRequest
0 голосов
/ 23 мая 2018

Я использую этот код для отображения содержимого моей папки в виде 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 голосов
/ 23 мая 2018

Просто сделайте файл, перечисляющий функцию, которая вызывает себя рекурсивно.

Вот пример на 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 и дерева.

...