---------编辑
我发现最简单的就是使用
写文本文件的行fopen()函数 fputs()的 FCLOSE()
是否有任何理由使用下面答案中指出的其他一些代码?
-------结束编辑
我找到了写入文本文件的不同代码示例。我查看了苹果开发网站,但也无法在那里找到一个好的答案。好像你可以使用fopen()和fwrite(),但我也找不到好的例子。以下是我正在尝试使用的内容,它确实有效。但是我需要在文件中写多行。您将在下面的示例结尾处看到我将文件写入2次,但最终输出中只有一行。
你如何写多行?
这是使用“Apple iPhone”标准的正确代码吗?
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
NSString *parentDir = [paths objectAtIndex:0];
(void)[[NSFileManager defaultManager]
createDirectoryAtPath:parentDir
withIntermediateDirectories:YES
attributes:nil error:NULL];
NSString *path = [parentDir stringByAppendingPathComponent:@"myFile.txt"];
NSString *SendStr = [[NSString alloc] initWithFormat:@"This is a test\r\n"];
NSData *data0 = [ SendStr dataUsingEncoding:NSUTF8StringEncoding];
NSData* data = [[NSData alloc] initWithData:data0 ];
NSError *error = nil;
[data writeToFile:path options:NSDataWritingAtomic error:&error];
[data writeToFile:path options:NSDataWritingAtomic error:&error];
感谢您的帮助!
答案 0 :(得分:0)
NSString有将其内容写入文件的方法,因此不需要将其转换为NSData,只需一行即可:
[sendStr writeToFile:path atomically:YES encoding:NSUTF8Encoding error:&error];
如果要立即将多行写入文件,可以将它们累积到1个字符串对象中(可能使用NSMutableString)并写为一个字符串。如果您不能这样做并且想要将行附加到现有行,则必须使用NSFileHandle类(因为编写NSString或NSData的方法简单地覆盖现有文件):
NSData *data = [sendStr dataUsingEncoding:NSUTF8StringEncoding];
NSFileHandle *file = [NSFileHandle fileHandleForUpdatingAtPath:path];
[file seekToEndOfFile];
[file writeData: data];
P.S。几句小言论
sendStr
名称[sendStr release];
和[data release];