iPhone:登录到文件

Ily*_*ski 0 iphone objective-c

我想将日志字符串记录到文件中.

我实现了以下方法:

void QuietLog (NSString *format, ...) {
    if (format == nil) {
        printf("nil\n");
        return;
    }
    va_list argList;
    va_start(argList, format);

    NSMutableString *s = [[NSMutableString alloc] initWithFormat:format
                                                       arguments:argList];
    [s replaceOccurrencesOfString: @"%%"
                       withString: @"%%%%"
                          options: 0
                            range: NSMakeRange(0, [s length])];

    #ifdef LOGTOFILE_MODE
    NSData *dataToWrite = [s dataUsingEncoding: NSUTF8StringEncoding];
    [dataToWrite writeToFile: Log_FilePath atomically: YES];
    #else
    printf("%s\n", [s UTF8String]);
    #endif

    [s release];
    va_end(argList);
}
Run Code Online (Sandbox Code Playgroud)

writeToFile方法替换之前使用最后一个字符串的文件中的所有数据.但我想保留以前添加的数据并添加一个新字符串.

writeToFile有什么问题?为什么要覆盖所有现有数据?如何添加新字符串而不是覆盖旧字符串?

谢谢.

zpa*_*ack 7

如何使用NSFileHandle,因此:

NSData *dataToWrite = [s dataUsingEncoding: NSUTF8StringEncoding];
NSFileHandle* outputFile = [NSFileHandle fileHandleForWritingAtPath:Log_FilePath];
[outputFile seekToEndOfFile];
[outputFile writeData:dataToWrite];
Run Code Online (Sandbox Code Playgroud)