gpt4 book ai didi

cocoa - 当我尝试跟踪别名时,枚举目录会出现错误

转载 作者:行者123 更新时间:2023-12-03 17:24:38 26 4
gpt4 key购买 nike

我希望我的用户能够将文件夹拖放到我的 OSX 应用程序中。然后我查看该目录及其子目录中的所有文件。这工作正常,但当目录中有别名时就不行了。别名已正确解析(感谢 Matt Gallagher,苹果为你感到羞耻),但枚举器不允许我枚举目标目录(它只返回任何元素和下面的错误)。这是一些示例代码:

-(void)enumDirAtPath:(NSString*)path  {
NSString* file_enum = nil;
NSDirectoryEnumerator* enumerator = [[NSFileManager defaultManager] enumeratorAtPath:path];
while (file_enum = [enumerator nextObject])
{
NSString* file = [[NSString stringWithFormat:@"%@/%@",path,file_enum] stringByResolvingSymlinksAndAliases];

BOOL isDirectory = NO;
[[NSFileManager defaultManager] fileExistsAtPath:file isDirectory: &isDirectory];
if (!isDirectory) {
NSLog(@"Adding file: %@",file);
} else {
NSLog(@"Found dir: %@",file);
[self enumDirAtPath: file];
}
}
}

enumeratorAtURL:includePropertiesForKeys:options:errorHandler: 相同的代码给了我这个错误:

error: Error Domain=NSCocoaErrorDomain Code=257 "The file “Musik” couldn’t be opened because you don’t have permission to view it." UserInfo=0x1094cf670 {NSURL=file://localhost/Users/david/Desktop/Musik, NSFilePath=/Users/david/Desktop/Musik, NSUnderlyingError=0x1094d43f0 "The operation couldn’t be completed. Operation not permitted"}

即使我只是dispatch_async递归调用,它也不会让我这样做。有什么方法可以迭代目录并获取所有内容吗?

注意:我完全意识到这可能会导致无限循环。这段代码只是为了说明问题。

最佳答案

我非常确定答案就在错误消息中:

The file “Musik” couldn’t be opened because you don’t have permission to view it.

在 Finder 应用程序中显示别名的目的地,并通过终端中的“获取信息”或 ls -l@ 检查其权限 - 我敢打赌,您的用户帐户 david 未被授予以下权限之一:

  • 阅读
  • 执行
  • 列表

最后一个通常在命令行上可见,除非与显式deny-access-control-entry结合使用。

关于cocoa - 当我尝试跟踪别名时,枚举目录会出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10656125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com