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 回答