打印到txt文件时如何连接?

时间:2014-03-07 14:21:31

标签: objective-c

我正在尝试调用打印到txt文件的方法。但是当我再次调用该方法时,它将用我的新文本覆盖文本文件中的内容。我想提交以继续添加打印内容。

-(void) print:(NSString *)name
{
NSURL *url = [NSURL fileURLWithPath:@"/here/file.txt"];
NSString *fileContent = [NSString stringWithFormat"@"%@\n", name];
[fileContent writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
}

当我调用此方法时,我通过执行以下操作来调用它:

[name print: person1.name];
[name print: person2.name];

每当我尝试打印下一个名称时,它只会替换文本文件中的名称。我不确定如何进行concantenate并继续添加名称?

谢谢

我试过这个:

NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:@"/here/file.txt"];
NSString *textToWrite = @"hello";
[fileHandle seekToEndOfFile];
[fileHandle writeData:[textToWrite dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];

什么都没有打印。

2 个答案:

答案 0 :(得分:0)

也许这样的事情更好(我试图整合你的解决方案)

-(void) print:(NSString *)name
{
    NSString* path = [[NSBundle mainBundle] pathForResource:@"file.txt" 
                                                     ofType:@"txt"];
    NSString* content = [NSString stringWithContentsOfFile:path
                                                  encoding:NSUTF8StringEncoding
                                                     error:NULL];
    NSString *fileContent = [NSString stringWithFormat"%@\n%@", content, name];
    NSURL *url = [NSURL fileURLWithPath:path];
    [fileContent writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
}

即使我猜可能会有更有效的方式。

答案 1 :(得分:0)

NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:aPath];
if (!fileHandle){
    NSLog(@"Error: File does not exist!");
} else {
    [fileHandle seekToEndOfFile];
    [fileHandle writeData:[textToWrite dataUsingEncoding:NSUTF8StringEncoding]];
    [fileHandle closeFile];
}

请看这里:https://stackoverflow.com/a/11106678/2115477