我使用此代码将我的文件夹内容列为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);
}
这真的很完美。但我也要列出我的子文件夹内容。在子文件夹中也是文件夹。有人可以给我一个如何做到这一点的提示吗?
由于
答案 0 :(得分:0)
只需让文件列出一个递归调用自身的函数。
伪代码:
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和树存储的某些地方有例子。