2011-11-13 5 views
2

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

[anNSString writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL];

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

ответ

1

Вы просто пишите это сразу, а не пытаетесь записать его пошагово. -[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

[ 'ул appendString: anNSString];' будет просто продолжать прибавлять в той же строке, правильно? Как вы указываете, где должен быть записан разрыв строки? – GeneralMike

+0

Получил это, нужно использовать '\ r \ n'. См. Мой ответ для деталей. – GeneralMike

0

Если вам нужно записать на новую строку каждый раз, начните с того, что в @ ответ Джастина, но добавить [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 будет на его собственной линии в текстовом файле.

1

Я чувствую, что принятый ответ неверен, поскольку он не ответил на исходный вопрос. Для того, чтобы решить оригинальный вопрос, вы должны использовать 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]; 
Смежные вопросы