1

ドキュメントディレクトリに200ログ/行のテキストファイルが作成されています(文字列を使用してデータを区切るための区切り文字付き)。最初の50レコードを別のファイルに転送し、残りの150レコードを同じファイルに保持したいと思います。

私は論理を考えました、言います

NSString *logString = [[NSString alloc]initWithContentsOfFile:logFilePath encoding:NSUTF8StringEncoding error:nil];
NSArray *logsArray = [logString componentsSeparatedByString:@"[;]"];
[@"" writeToFile:logFilePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
for (int i=0; i<=[logsArray count];i++){
     if(i<=50){
        "write to new file"
     }
     else{
         "write to old file"
     }
}

このロジックは正常に機能します。私の懸念は、ある時点でファイルを空にして書き換えているため、データが失われるリスクが高いことです。データをバックアップするには、すでに大量のファイルを作成しています。このケースを処理するための解決策はありますか?

ありがとう-Arun.AR    

4

1 に答える 1

1
  1. 200行すべてをNSArrayにロードします(現在のように)。
  2. 「file_50_new」のような名前の新しいファイルを作成します。
  3. NSArrayの最初の50個のオブジェクトを「file_50_new」に書き込みます。
  4. 「file_150_new」のような名前の新しいファイルを作成します。
  5. NSArrayの他の150個のオブジェクトを「file_150_new」に書き込みます。
  6. 元のファイルを削除します。
  7. 新しいファイルの名前を変更します。

このようにして、常に元のファイルを最後まで保持します。何かが起こった場合(クラッシュなど)、常にすべての線があります。それらは異なるファイルにある可能性がありますが、もう少しロジックを使用して後でいつでも元に戻すことができます。

実際、最後の150個のオブジェクトの書き込みは、Cocoaフレームワークによってアトミックに実行できますが、これらの手順がその要点です。

于 2012-08-21T16:15:25.667 に答える