Xcode iPhone: удаление текста из файла .txt

У меня есть текстовый файл с некоторыми строками, я могу получить доступ к тексту из файла с помощью функции [NSString initWithContentsOfFile], но дальше я хочу удалить весь текст из этого файла, но оставить текстовый файл там как мое приложение будет продолжать передавать строки сообщений в файл. Я просмотрел NSString, NSStream, NSScanner, NSFileManager, NSHandle, но до сих пор не знаю, как это сделать.

Я могу выполнить функцию удаления файла, но на самом деле я не хочу этого делать, потому что моему приложению потребуется зацикливаться тысячу раз, и я думаю, что неразумно постоянно удалять и создавать файл.

Любая идея? Благодарность


person user377795    schedule 30.06.2010    source источник


Ответы (3)


Вам не нужно удалять содержимое из файла. Когда вы будете готовы поместить новую информацию в файл - вы просто перезапишете свой старый файл.

NSString *str = @"test string";
NSError * error = nil;
[str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (error)
    NSLog(@"err %@", [error localizedDescription]);

При добавлении дополнительных данных:

NSFileHandle *myHandle = [NSFileHandle fileHandleForUpdatingAtPath:appFile];
[myHandle seekToEndOfFile];
[myHandle writeData:data];
[myHandle closeFile];
person Evgen Bodunov    schedule 30.06.2010

Удаление содержимого из файла означает повторную запись всего файла.

person adf88    schedule 30.06.2010

Рассматривали ли вы вместо этого использование NSPipe? Похоже, вы пытаетесь реализовать очередь строк, которые необходимо обработать. Есть много способов сделать это. Не уверен, что перебор файловой системы — лучший подход, учитывая другие параметры, такие как NSOperationQueue, NSNotificationCenter. Вы также можете использовать NSMutableArray как очередь, используя addObject: для отправки и removeObjectAtIndex: для извлечения строк. Если вам нужно сохранить необработанные строки, очень легко сохранить массив в файл как часть обработки приостановки/завершения и перезагрузить при запуске.

person falconcreek    schedule 30.06.2010