1

テキストファイルに書き込むことができましたが、テキストファイルの現在の内容を上書きせずに、テキストファイルにさらにデータを追加できるようにしたいと考えています。つまり、現在のコンテンツが消去されないように、毎回ファイルの最後に書き込みたいのです。次のコードは私がこれまでに行ったことですが、毎回上書きされて最初に書き込まれます。最後に書き込む方法がわかりません。このコードに基づくと、テキストファイルの現在のコンテンツは次のようになります。

June
July
August
September

たとえば、以下を追加できるようにしたい

 June
 July
 August
 September
 October

誰かがこれを行う方法を知っていますか?ありがとう!

-(void) writeToTextFile{
NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", 
                      documentsDirectory];
//create content - four lines of text
NSString *content = @"June\nJuly\nAugust\nSeptember";
//save content to the documents directory
[content writeToFile:fileName 
          atomically:NO 
            encoding:NSStringEncodingConversionAllowLossy 
               error:nil];

 }
4

2 に答える 2

4

NSFileHandleする必要があります

NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:fileName];
[fileHandle seekToEndOfFile];
[fileHandle writeData:[content dataUsingEncoding:NSUTF8StringEncoding]];
于 2012-08-16T04:51:35.293 に答える
1

次のメソッドを使用して、ファイルの終わりに書き込みます。

-(void) writeToTextFileWithString:(NSString *) content name:(NSString *) file {

  //TODO: Disable logs at release time

  content = [NSString stringWithFormat:@"%@ |||   %@\n",content,[[NSDate date] description]];

  //get the documents directory:
  NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
  NSString *fileName = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.txt",file]];

  NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:fileName];
  if (fileHandle){

    [fileHandle seekToEndOfFile];
    [fileHandle writeData:[content dataUsingEncoding:NSUTF8StringEncoding]];
    [fileHandle closeFile];
  }
  else{

    [content writeToFile:fileName
              atomically:NO
                encoding:NSStringEncodingConversionAllowLossy
                   error:nil];
  }
}
于 2012-08-16T04:53:32.203 に答える