2012-08-30 27 views
26

假设我有一个包含在主应用程序包中的任意文件集。我想为启动时的文件提取URL并将其存储在某处。这可能使用NSFileManager?这方面的文件不清楚。在应用程序启动时获取包文件引用/路径

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

+0

什么是“文件参考”?路径?网址是什么?什么? – 2012-08-30 21:28:53

+0

通过文件引用我的意思是文件的URL –

回答

59

可以使用获取文件的URL在主束

NSString *path = [[NSBundle mainBundle] pathForResource:@"SomeFile" ofType:@"jpeg"]; 
NSURL *url = [NSURL fileURLWithPath:path]; 

你可以写这篇文章的URL,例如,在文档目录的属性列表文件:

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]; 

如果你不知道该文件的名称只是想和你以列出包中的所有文件,使用

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` 
} 
+0

如果我不知道文件的名称,我只想获取所有文件? –

+0

@AndrewLauerBarinov然后你可以阅读NSFileManager的文档。 (但请参阅编辑,无论如何...) – 2012-08-30 21:40:38

+0

感谢您的额外信息! –

2

是的,你会得到他们的路径:

NSString *path = [NSBundle mainBundle] pathForResource:@"file1" ofType:@"png"]; 
NSURL *fileURL = [NSURL fileURLWithPath:path] 

// save it as any other object or in a dictionary: 

[myMutableDictionary setObject:fileURL forKey:@"file1.png"]; 

编辑:获得文件的完整列表,使用的NSFileManager,拿到路径捆绑本身,然后步行每个目录获取文件,使得网址,并将它们保存在某个地方。因此,如何在一个目录中执行此操作就有很多代码。 [你应该更新你的问题是你想要什么更具体的,这是不是在所有原先作出明确]

+1

如果我不知道文件的名称,我只想获得所有文件? –

0

有上NSBundledocumentation)可在10.6或iOS 4的API来直接得到NSURL,而不是传递路径NSURL构造:

- (NSURL *)URLForResource:(NSString *)name withExtension:(NSString *)ext; 

它也有采取变体subdirectorylocalizationName,与它的-pathForResource:相同。

相关问题