停止截断目标C的文件?

时间:2011-08-02 23:47:50

标签: iphone objective-c cocoa-touch

我正在尝试将一些数据写入iphone sdk中的文件....我正在使用for语句来更好地解释情况我有一些代码:

for(int i = 0;i < 11;i++){

NSString *myFile = [documentsDirectory stringByAppendingPathComponent:@"hello.txt"];
[i writeToFile: myFile atomically:NO encoding:NSUTF8StringEncoding error:NULL];
}

现在我希望在文件中写入12345678910,但只写入10个,这意味着每次写入文件时文件都会被删除。所以我的问题是如何编写1到10而无需将所有内容都放入字符串因为我有很多数据..

感谢

2 个答案:

答案 0 :(得分:4)

SDK文档说明了-writeToFile:atomically:encoding:error此方法会覆盖路径上的所有现有文件。

该方法用于将字符串转储到文件中。出于您的目的,您可以构建字符串,也可以使用[NSFileHandle fileHandleForWritingAtPath]打开文件:

NSString *myFile = [documentsDirectory stringByAppendingPathComponent:@"hello.txt"];
NSFileHandle *file = [NSFileHandle fileHandleForWritingAtPath:myFile];

for(int i = 0; i <= 10; i++) {
    NSString *dataString = [NSString stringWithFormat:@"%i", i];

    [file writeData:[dataString dataUsingEncoding:NSUTF8StringEncoding]];
}

[file closeFile];

答案 1 :(得分:2)

如果您正在尝试将一系列整数写入文件,我会这样做:

NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:FILE_PATH];
for(int i=0; i<11; i++)
{
    NSString *str = [NSString stringWithFormat:@"%d",i];

    [fileHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]];
}

[fileHandle closeFile];