文件夹(目录)未被正确检测到

时间:2009-10-17 20:23:09

标签: objective-c directory

我注意到'bog标准'Objective-C文件夹检测代码出错。我正在扫描具有给定路径的文件和文件夹,并记录存在多少文件以及存在多少个文件夹。

奇怪的是,我正在返回一个比实际存在多一个文件夹的数量!

逐步调试例程并观察每个文件/文件夹名称,因为例程确定对象是文件还是文件夹,正在向我显示其中一个文件正在通过测试成为文件夹!?!?! ?

错误检测到的文件是“带附件的RTF(RTFD)”文件类型。我还没有检查其他文件夹,看看是否有更多的文件类型可能会错误报告。

除了这个文件外,我程序中的其他所有内容都正常工作。

有没有人有任何想法我可能做错了什么?或者它是Objective-C中的已知错误?

以下是我正在使用的代码的一部分:

 BOOL isDir;
    NSString *file;
 NSString *docsDir = [self path];
 NSFileManager *manager = [NSFileManager defaultManager];
 NSDirectoryEnumerator *dirEnum = [manager enumeratorAtPath: docsDir];
 NSDictionary *fattrs;
        //(only showing important declarations above)

while (file = [dirEnum nextObject]) {
    //If user clicked the Abort Button, get out of the loop
    if (abortFlag)
        break;

    if ([excludeSubdirectories state] == NSOnState) {
        [dirEnum skipDescendents];
    }

    if ([manager fileExistsAtPath:[docsDir stringByAppendingPathComponent:file]
                      isDirectory:&isDir] && isDir) {
       ++dirCount;
       if ([excludeSubdirectories state] == NSOnState) {
           continue;
       }
    }
}
            //... Do a bunch of other stuff, etc., etc. ...

1 个答案:

答案 0 :(得分:3)

RTFD文件实际上是捆绑包,它们只是花哨的目录。您可以通过右键单击rtfd文件并选择“显示包内容”选项来验证这一点。

如果您在Mac OS X上编写此内容,则可以使用-[NSWorkspace isFilePackageAtPath:]来识别这些捆绑包。

相关问题