Main App Bundle に任意のファイル セットが含まれているとします。起動時にそれらのファイル URL を取得して、どこかに保存したいと思います。これは可能NSFileManager
ですか?その点で、ドキュメントは不明確です。
注: ファイルの URL だけが必要です。実際のファイルにアクセスする必要はありません。
Main App Bundle に任意のファイル セットが含まれているとします。起動時にそれらのファイル URL を取得して、どこかに保存したいと思います。これは可能NSFileManager
ですか?その点で、ドキュメントは不明確です。
注: ファイルの URL だけが必要です。実際のファイルにアクセスする必要はありません。
次を使用して、メイン バンドル内のファイルの URL を取得できます。
NSString *path = [[NSBundle mainBundle] pathForResource:@"SomeFile" ofType:@"jpeg"];
NSURL *url = [NSURL fileURLWithPath:path];
たとえば、Documents ディレクトリ内のプロパティ リスト ファイルにこの 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`
}
はい、パスを取得します。
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 を使用し、バンドル自体へのパスを取得してから、各ディレクトリをたどってファイルを取得し、URL を作成して、どこかに保存します。SOには、これを行うためにディレクトリを移動する方法のコードがたくさんあります。[あなたが望むものをより具体的にするために質問を更新する必要があります。これは当初まったく明確にされていませんでした]
コンストラクターにパスを渡すのではなく、直接取得するために、10.6 または iOS 4 で利用可能なNSBundle
( documentation )の API があります。NSURL
NSURL
- (NSURL *)URLForResource:(NSString *)name withExtension:(NSString *)ext;
また、同等のものと同じasubdirectory
とを取るバリアントもあります。localizationName
-pathForResource: