我知道如何递归列出目录内容。我将使用 Snow Leopard 的 enumeratorAtURL:includePropertiesForKeys:options:errorHandler: 方法来执行此操作。
但是,我想将我的发现存储到对象层次结构中(例如,具有isLeaf的自定义 FileOrDirectory 类的对象, 子和计数属性)。
我需要将目录和文件结构预先加载到这样的对象层次结构中,以便使用 NSTreeController 等执行我想要的操作。我想这里最棘手的事情是让对象层次结构中的 children 属性正确。
有什么想法吗?
最佳答案
如果我正确理解你的问题,你可以通过编写一个递归函数来解决这个问题,该函数接受当前节点(文件或文件夹)并返回表示其结构的对象。
这是Java,但也许它传达了我的想法。我省略了 isLeaf
和 count
,因为它们的值可以从 children
派生。
class FileOrFolder
{
String name;
FileOrFolder[] children;
boolean isFile;
}
private FileOrFolder traverse(File file)
{
FileOrFolder fof = new FileOrFolder();
fof.name = file.getAbsolutePath();
if (file.isDirectory())
{
String[] children = file.list();
fof.children = new FileOrFolder[children.length];
for (int i = 0; i < children.length; i++)
{
fof.children[i] = traverse(new File(fof.name + "/" + children[i]));
}
}
fof.isFile = file.isFile();
return fof;
}
关于objective-c - 递归列出并存储目录内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2986199/