Цель C Добавление содержимого в файл - PullRequest
3 голосов
/ 13 ноября 2011

Мне нужно написать несколько строк в файл. Как перейти к следующей строке, чтобы содержимое файла не перезаписывалось каждый раз? Я использую цикл for со следующим кодом

[anNSString writeToFile: атомарный путь: YES кодировка: NSUTF8StringEncoding error: NULL];

NSString. anNSString повторно инициализируется во время каждого цикла. Так что мне нужно продолжать добавлять к пути к файлу каждый в течение каждого цикла. Спасибо

Ответы [ 3 ]

3 голосов
/ 12 апреля 2013

Мне кажется, что принятый ответ неверен, поскольку он не ответил на первоначальный вопрос.Чтобы решить исходный вопрос, вы должны использовать NSOutputStream , что упрощает добавление содержимого в существующий файл:

NSString *myString = @"Text to append!"; // don't forget to add linebreaks if needed (\r\n)
NSOutputStream *stream = [[NSOutputStream alloc] initToFileAtPath:filePath append:YES];
[stream open];
NSData *strData = [myString dataUsingEncoding:NSUTF8StringEncoding];
[stream write:(uint8_t *)[strData bytes] maxLength:[strData length]];
[stream close];
1 голос
/ 13 ноября 2011

Вы просто записываете все сразу, а не пытаетесь писать постепенно.-[NSString writeToFile:atomically:encoding:error] будет просто перезаписывать файл каждый раз - он не добавляется.

Вот иллюстрация:

NSMutableString * str = [NSMutableString new];

// > anNSString is reinitialized during each loop. 
for ( expr ) {
    NSString * anNSString = ...;
    // > SO i need to keep adding to the file path each during each loop.
    [str appendString:anNSString];
}

NSError * outError(0);
BOOL success = [str writeToFile:path
                     atomically:YES
                       encoding:NSUTF8StringEncoding
                          error:&outError];
[str release];
...
0 голосов
/ 12 апреля 2013

Если вам нужно каждый раз писать в новую строку, начните с того, что есть в ответе @ justin, но добавляйте [str appendString:@"\r\n"]; везде, где вам нужны новые строки.

NSMutableString * str = [NSMutableString new];

// > anNSString is reinitialized during each loop. 
for ( expr ) {
    NSString * anNSString = ...;
    // > SO i need to keep adding to the file path each during each loop.
    [str appendString:anNSString];
    [str appendString:@"\r\n"]; //****** THIS IS THE NEW LINE ******
}

NSError * outError(0);
BOOL success = [str writeToFile:path
                     atomically:YES
                       encoding:NSUTF8StringEncoding
                          error:&outError];
[str release];
...

С этим кодом каждый anNSString будет находиться в отдельной строке в текстовом файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...