アプリ ライブラリ ディレクトリ内のサブディレクトリにファイルを作成しようとしています。まず、次のようにライブラリへのパスを取得しています。
- (NSURL*) getLibraryDirectory
{
NSFileManager* manager = [NSFileManager defaultManager];
NSArray* paths = [manager URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask];
if ([paths count] > 0)
{
return [paths objectAtIndex:0];
}
return nil;
}
次に、次のコードを使用してサブフォルダーを作成します。
- (NSURL*) getDirectory:(NSString*)subdirName
{
NSFileManager* sharedFM = [NSFileManager defaultManager];
NSURL* libraryDirectory = [self getLibraryDirectory];
if (libraryDirectory)
{
NSURL* subdir = [libraryDirectory URLByAppendingPathComponent:subdirName isDirectory:YES];
if (![sharedFM fileExistsAtPath:[subdir absoluteString] isDirectory:YES])
{
NSError* error;
if ([sharedFM createDirectoryAtURL:subdir withIntermediateDirectories:YES attributes:nil error:&error])
{
return subdir;
}
else
{
NSLog(@"Error occured while trying to create subdirectory \"%@\". Code - %d, desc - %@", subdirName, [error code], [error localizedDescription]);
}
}
}
return nil;
}
そして最後に、このフォルダーに次のようなファイルを作成しようとしています:
NSString* filePath = [[self getDirectory:DIR_COMMANDS] absoluteString];
if (filePath)
{
filePath = [filePath stringByAppendingPathComponent:@"test_file.tst"];
NSFileManager* manager = [NSFileManager defaultManager];
if ([manager createFileAtPath:filePath contents:[[NSData alloc] initWithBytes:[[@"string" dataUsingEncoding:NSUTF16LittleEndianStringEncoding] bytes] length:12] attributes:nil])
{
NSLog(@"YES");
}
else
{
NSLog(@"NO");
}
}
しかし残念なことに、私は毎回「NO」を受け取り、その理由を理解できません。