将文本添加到现有txt文件

时间:2013-08-08 21:56:17

标签: iphone ios objective-c xcode

如何从UITextField添加文本,用逗号分隔现有的txt文件?

我使用此代码:

  NSString *imageName = [NSString stringWithFormat:@"Documents/text.txt"];
NSString  *textPath = [NSHomeDirectory() stringByAppendingPathComponent:imageName];

NSString *word = [NSString stringWithFormat:@"%@ ,", _wordInput.text];

[word writeToFile:textPath atomically:YES encoding:NSUTF8StringEncoding error:nil];

如您所见,我使用此代码从_wordInput添加文本,这是我的UITextField,并添加逗号。之后我使用writeToFile选项将文本写入我的text.txt文件。

我测试过,效果很好,但每次都会覆盖现有文本..

请帮助不要覆盖文字,但请用逗号分隔。

让我说我的UITextField此时有文本“earth”,我会按下一个按钮,上面的代码将会运行..现在我的text.txt文件将包含“earth”,如果我将在UITextField上输入另一个文本并运行上面的代码,现有的文本将被覆盖,但我需要在“地球”之后添加它,

感谢。

2 个答案:

答案 0 :(得分:1)

您需要在回写时包含原始文本。像这样:

NSString *imageName = [NSString stringWithFormat:@"Documents/text.txt"];
NSString  *textPath = [NSHomeDirectory() stringByAppendingPathComponent:imageName];
NSString *existingFileContents = [NSString stringWithContentsOfFile:textPath encoding:NSUTF8StringEncoding error:nil];

NSString *newFileContents = [NSString stringWithFormat:@"%@, %@", existingFileContents, _wordInput.text];

[newFileContents writeToFile:textPath atomically:YES encoding:NSUTF8StringEncoding error:nil];

我认为使用像write()或fwrite()这样的系统api调用会更有效率,但我从未测量过它。如果您的文本文件很大,您可能需要查看它。

答案 1 :(得分:1)

最好使用以下功能:

-(void)saveText:(NSString*)data
{
    NSString *imageName = [NSString stringWithFormat:@"Documents/text.txt"];
    NSString  *textPath = [NSHomeDirectory() stringByAppendingPathComponent:imageName];
    NSString *word = [NSString stringWithFormat:@"%@ ,", _wordInput.text];
    NSFileHandle *fileHandler= [NSFileHandle fileHandleForWritingAtPath:textPath];
    [fileHandler seekToEndOfFile];
    [fileHandler writeData:[word dataUsingEncoding:NSUTF8StringEncoding]];
    [fileHandler closeFile];
}