我将如何在应用程序的目录(.app 所在的同一文件夹)中获取文件,并获取它的绝对路径。假设相对路径是“Data/file.txt”,我将如何使用 Objective C 将其作为绝对路径?如果有帮助,我让用户输入他们的主文件夹名称。
请帮忙,
嗨盖伊
我将如何在应用程序的目录(.app 所在的同一文件夹)中获取文件,并获取它的绝对路径。假设相对路径是“Data/file.txt”,我将如何使用 Objective C 将其作为绝对路径?如果有帮助,我让用户输入他们的主文件夹名称。
请帮忙,
嗨盖伊
我会使用NSURL
为我解析 URL 的方法,如下所示:
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]
.
通过执行以下操作查找正在运行的应用程序的位置:
NSString * applicationPath = [[NSBundle mainBundle] bundlePath];
这将返回类似:
/Users/myUser/Library/Application Support/iPhone Simulator/User/Applications/317CF5C7-57B3-42CE-8DF4-4DD10B070D95/Assignment1a.app
然后用- (NSString *)stringByDeletingLastPathComponent
切掉最后一点。
您应该能够将应用程序的根文件夹与相对路径连接起来。您可以使用 NSHomeDirectory() 获取应用程序主目录,因此要获取绝对路径,您可以执行以下操作:
NSString *path = [NSHomeDirectory() stringByAppendingString: @"/Data/file.txt"];