0

いくつかの文字列を含むテキスト ファイルがあり、[NSString initWithContentsOfFile] 関数を使用してファイルからテキストにアクセスできますが、次にやりたいことは、そのファイルからテキスト全体を削除しますが、テキスト ファイルはそのままにしておきます。私のアプリケーションはメッセージの文字列をファイルに送り続けます。私は NSString 、 NSStream 、 NSScanner 、 NSFileManager 、 NSHandle を見てきましたが、まだそれを行う方法がわかりません。

ファイルの削除機能を実行できますが、アプリケーションが何千回もループする必要があり、ファイルを継続的に削除して作成するのは賢明ではないと思うため、実際には実行したくありません。

何か案が?ありがとう

4

3 に答える 3

2

ファイルからコンテンツを削除する必要はありません。新しい情報をファイルに入れる準備ができたら、古いファイルを上書きするだけです。

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];
于 2010-06-30T09:38:07.643 に答える
0

代わりに NSPipe を使用することを検討しましたか? 処理が必要な文字列のキューを実装しようとしているようです。これを行うには多くの方法があります。NSOperationQueue、NSNotificationCenter などの他のオプションを考えると、ファイル システムのスラッシングが最善の方法であるかどうかはわかりません。NSMutableArrayaddObject: を使用してプッシュし、removeObjectAtIndex: を使用して文字列をポップするキューのように使用することもできます。未処理の文字列を保存する必要がある場合は、中断/終了処理の一部として配列をファイルに保存し、起動時にリロードするのは非常に簡単です。

于 2010-06-30T12:50:20.173 に答える
0

ファイルからコンテンツを削除すると、ファイル全体が再度書き込まれます。

于 2010-06-30T08:52:53.160 に答える