如何在iOS sdk的本地资源txt文件中追加字符串

时间:2011-08-12 14:04:18

标签: ios objective-c append

我一直在尝试将字符串附加到本地资源文件,但我找不到解决方案。我正在尝试为我的应用程序中的所有函数调用创建一个日志文件,所以如果它崩溃我可以看到它停止了哪个函数。

我创建了一个log.rtf文件,但无法在此文件中写入。有人可以帮我在这个文件中附加一个字符串,而不必覆盖整个文件吗?

3 个答案:

答案 0 :(得分:31)

我使用以下代码解决了上述问题。

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *logPath = [[NSString alloc] initWithFormat:@"%@",[documentsDir stringByAppendingPathComponent:@"log.rtf"]];
NSFileHandle *fileHandler = [NSFileHandle fileHandleForUpdatingAtPath:logPath];
[fileHandler seekToEndOfFile];
[fileHandler writeData:[text dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandler closeFile];

答案 1 :(得分:0)

- (void)log:(NSString *)message {
    NSMutableString *string = [[NSMutableString alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/log.txt", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]]];
    if (!string) string = [[NSMutableString alloc] init];
    [string appendFormat:@"%@\r\n", message];
    [string writeToFile:[NSString stringWithFormat:@"%@/log.txt", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] atomically:YES encoding:NSUTF8StringEncoding error:nil];
}

答案 2 :(得分:0)

这样你就可以做到这一点..

+ (void)WriteLogWithString:(NSString *)log
{

        if(log != nil){

            NSString *locationFilePath = [self getLogFilePath];//access the path of file

            FILE *fp = fopen([locationFilePath UTF8String], "a");

            fprintf(fp,"%s\n", [log UTF8String]);

            fclose(fp);
        }

}