cocos2d 데이터의 파일을 저장하여 파일 끝에 추가

3050 단어
오늘 프로그램 을 만들어 데이터 를 저장했는데, 역시 한나절 이나 해서야 다 했다
주로 파일을 만들고 그 뒤에 추가하는 데 많은 힘을 들였다
이제 드디어 다 됐어요. 여러분께 나눠드리고 도움이 됐으면 좋겠어요.
-(BOOL) saveData:(NSString *)data  saveFileName:(NSString *)fileName
{
    NSError *error = nil;
    BOOL isOK = YES;
    //               
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    if (!documentsDirectory)
    {
        NSLog(@"Documents directory not found!");
        return NO;
    }
    //            documentsDirectory     ,          
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
    BOOL isDirExist = [[NSFileManager defaultManager] fileExistsAtPath:appFile];
    //          ,          ,           ,     , 
    //                     ,       
    if(isDirExist == NO)
    {
        //createDirectoryAtPath:          
        [[NSFileManager defaultManager]createDirectoryAtPath:appFile withIntermediateDirectories:YES attributes:nil error:&error];
    }
    //                       ,         
    //                  ,    appFile         
    //      appFile  documentsDirectory    
    NSString *logPath = [appFile stringByAppendingPathComponent:@"file.txt"];
    BOOL isFileExist = [[NSFileManager defaultManager]fileExistsAtPath:logPath];
    if(isFileExist == NO)
    {
       [[NSFileManager defaultManager] createFileAtPath:logPath contents:nil attributes:nil];
    }
    
    //   NSFileHandle        
    NSLog(@"logPath = %@",logPath);
    NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:logPath];
    NSLog(@"fileHandele = %@",fileHandle);
    
    @try
    {
        NSLog(@"Data:%@",data);
        [fileHandle seekToEndOfFile];
        [fileHandle writeData:[data dataUsingEncoding:NSUTF8StringEncoding]];
    }
    @catch (NSException *exception)
    {
        isOK = NO;
    }
    @finally{
    }
    //    
    [fileHandle closeFile];
    return isOK;
}

데이터를 얻는 데는 아래의 방법을 써야 한다
-(id) loadData:(NSString *)fileName
{
    NSError *error = nil;
    //     
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
    NSString *logPath = [appFile stringByAppendingPathComponent:@"file.txt"];
    //           string
    NSString *string = [NSString stringWithContentsOfFile:logPath encoding:NSUTF8StringEncoding error:&error];
    //               ,                
    //NSMutableArray *myData = [[[[NSMutableArray alloc] initWithContentsOfFile:logPath] componentsJoinedByString:@"
"] autorelease]; //
,
NSArray *myData = [string componentsSeparatedByString:@"
"]; return myData; }

만약 당신들이 다른 의견이 있다면, 교류를 환영합니다

좋은 웹페이지 즐겨찾기