如何在C中访问命令行应用程序的包

时间:2010-03-25 16:26:44

标签: c xcode macos command-line

我在Mac上,用Xcode编程。我有一个命令行应用程序,它将读取/写入它的包中的文件,我想知道如何访问这些文件。

谢谢,        曼先生

编辑:如果我在用户的库文件夹中创建了一个文件夹,它会更好吗?

2 个答案:

答案 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笔记进入应用程序支持。)