我一直在尝试将字符串附加到本地资源文件,但我找不到解决方案。我正在尝试为我的应用程序中的所有函数调用创建一个日志文件,所以如果它崩溃我可以看到它停止了哪个函数。
我创建了一个log.rtf文件,但无法在此文件中写入。有人可以帮我在这个文件中附加一个字符串,而不必覆盖整个文件吗?
答案 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);
}
}