cocoa - 尝试在/Library/Application Support/中创建新目录时出现 NSFileWriteNoPermissionError

标签 cocoa permissions directory nsfilemanager

以下代码在从 xcode 运行时返回 NSCocoaErrorDomain,错误代码为 513 (NSFileWriteNoPermissionError)。

NSError *error;

[[NSFileManager defaultManager] 
createDirectoryAtPath:@"/Library/Application Support/myapp" 
withIntermediateDirectories:YES 
attributes:nil 
error:&error];

这是在 Mac OS X 10.6.7 上,指定的目录不存在,并且我的用户具有管理员权限。

目的是保存用户之间共享的应用程序支持文件。创建这个目录不应该有写权限吗?

最佳答案

不,那是系统的 Library 文件夹。您需要用户的库,位于“~/Library/”。您可以尝试:

[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/myapp"]

或者:

NSArray * paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString * appSupportPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"myapp"];

还有一个选项,您还可以从文件管理器获取 URL:

NSFileManager * fm = [[NSFileManager alloc] init];
NSArray * urls = [fm URLsForDirectory:NApplicationSupportDirectory inDomains:NSUserDomainMask];
NSURL * appSupportURL = [urls objectAtIndex:0];

关于cocoa - 尝试在/Library/Application Support/中创建新目录时出现 NSFileWriteNoPermissionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005597/

相关文章:

objective-c - 如何从 NSMatrix 获取 NSButton (CheckBox) 的状态

android - MANAGE_OVERLAY_PERMISSION - 未找到 Activity 异常

c++ - 如何使用 Boost 库更改文件权限?

google-apps-script - 保护电子表格免于在 Google 表格中重命名

git - 如何将 'Watch' 只有 GitHub 存储库中的一个目录?

java - 将java独立程序部署到Tomcat服务器时的目录配置

cocoa - 在 OSX 应用程序中显示已知 Wifi 网络列表需要钥匙串(keychain)访问

macos - 如何在 cocoa 应用程序中保存常见的运行时数据?

objective-c - 使用 Swift 的 OSX 状态栏应用程序

ruby-on-rails - Ruby 创建递归目录树