Xcode iPhone: удаление текста из файла .txt - PullRequest
0 голосов
/ 30 июня 2010

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

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

Есть идеи? спасибо

Ответы [ 3 ]

2 голосов
/ 30 июня 2010

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

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];
0 голосов
/ 30 июня 2010

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

0 голосов
/ 30 июня 2010

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

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