我在Mac上,用Xcode编程。我有一个命令行应用程序,它将读取/写入它的包中的文件,我想知道如何访问这些文件。
谢谢, 曼先生
编辑:如果我在用户的库文件夹中创建了一个文件夹,它会更好吗?
答案 0 :(得分:3)
不确定我是否理解你的问题, 但是如果你想要一个资源的路径,你可以使用:
NSString *path = (NSString*)[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"png"];
如果您只想要app目录,可以使用:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [[paths objectAtIndex:0] retain];
或
NSArray *resPaths = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES);
NSString *resourceDirectory = [[resPaths objectAtIndex:0] retain];
我现在不在我的Mac上,所以我只是从我们的框架中粘贴。
答案 1 :(得分:3)
假设您实际拥有捆绑包,则可以使用CoreFoundation CFBundle API。您可以使用CFBundleGetMainBundle()
查找应用的捆绑包和CFBundleCopy*URL()
函数,以获取捆绑包及其各种组件的网址。
但是,应用程序不应该写入其捆绑包。有许多问题可能会出错,例如当前用户没有写入权限或签名包被破坏。通常,您的应用程序应将其创建的文件放在〜/ Library / Application Support文件夹中,而这些文件并不是用户可编辑的*。用户文档的正常位置是Documents文件夹。
(*澄清“用户可编辑”,我指的是用户通常希望导航并打开自己的文件,而不仅仅是通过应用程序界面单独访问的数据的私有存储。所以例如TextEdit文档go在文档中,Stickies笔记进入应用程序支持。)