在应用启动时获取捆绑文件引用/路径

And*_*nov 29 nsfilemanager nsbundle ios ios5

假设主应用程序包中包含任意一组文件.我想获取启动时的文件URL并将它们存储在某个地方.这可能用NSFileManager吗?在这方面,文件不清楚.

注意:我只需要文件URL,我不需要访问实际文件.

小智 66

您可以使用主要包中的文件的URL

NSString *path = [[NSBundle mainBundle] pathForResource:@"SomeFile" ofType:@"jpeg"];
NSURL *url = [NSURL fileURLWithPath:path];
Run Code Online (Sandbox Code Playgroud)

例如,您可以将此URL写入Documents目录中的属性列表文件:

NSString *docsDir = [NSSearchForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [docsDir stringByAppendingPathComponent:@"Files.plist"];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[url absoluteString] forKey:@"SomeFile.jpeg"];
[dict writeToFile:plistPath atomically:YES];
Run Code Online (Sandbox Code Playgroud)

如果您不知道文件的名称,并且只想列出软件包中的所有文件,请使用

NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[[NSBundle mainBundle] bundlePath] error:NULL];
for (NSString *fileName in files) {
    NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    // do something with `url`
}
Run Code Online (Sandbox Code Playgroud)


Ber*_*lor 6

或在Swift 4中:

        let url = Bundle.main.url(forResource: "FileName", withExtension: ".xyz")
Run Code Online (Sandbox Code Playgroud)