我如何获取应用程序目录中的文件(.app所在的文件夹),并获取它的绝对路径。假设相对路径是“Data / file.txt”,我如何使用Objective C将其作为绝对路径?如果有任何帮助,我让用户输入他们的主文件夹名称。
请帮忙,
HiGuy
答案 0 :(得分:14)
我会使用为我解析网址的NSURL
方法,例如:
NSURL * bundle = [[NSBundle mainBundle] bundleURL];
NSURL * file = [NSURL URLWithString:@"../Data/file.txt" relativeToURL:bundle];
NSURL * absoluteFile = [file absoluteURL];
“../”是必要的,因为否则它会尝试在您的应用包中找到 文件。预先设置“../”将告诉它查看包含的文件夹,而不是包本身。此外,-[NSBundle bundleURL]
是一个10.6+ API,但使用NSURL
便捷方法和-[NSBundle bundlePath]
复制功能非常简单。
答案 1 :(得分:2)
通过执行以下操作查找正在运行的应用的位置:
NSString * applicationPath = [[NSBundle mainBundle] bundlePath];
将返回类似的内容:
/Users/myUser/Library/Application Support/iPhone Simulator/User/Applications/317CF5C7-57B3-42CE-8DF4-4DD10B070D95/Assignment1a.app
然后使用- (NSString *)stringByDeletingLastPathComponent
来删除最后一位。
答案 2 :(得分:1)
您应该能够使用相对路径连接应用程序的根文件夹。您可以使用NSHomeDirectory()获取应用程序主目录,因此要获得绝对路径,您可以执行以下操作:
NSString *path = [NSHomeDirectory() stringByAppendingString: @"/Data/file.txt"];