0

別の行をファイルに入れる必要がありますが、サポートされていないようです

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    // the path to write file
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"myFile"];

    [dataString writeToFile:appFile atomically:YES];

文字列をファイルに入れますが、前の文字列を上書きします。

助言がありますか?

4

2 に答える 2

2

既存のファイルにデータを追加するには、そのファイルのインスタンスを作成してから、最後にNSFileHandleを呼び出します。文字列を自分でオブジェクトに変換する必要があります (正しいエンコーディングを使用)。終了したら、ファイル ハンドルを閉じることを忘れないでください。-seekToEndOfFile-writeData:NSData

より簡単ですが効率が悪い方法は、既存のファイルの内容を文字列に読み取り、新しいテキストをその文字列に追加して、すべてをディスクに再度書き込むことです。ただし、2000回実行されるループではそうしません。

于 2011-03-22T13:48:17.747 に答える
0

ありがとうオーレ!それが私が探していたものです。

他のサンプルコード:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

//creating a path
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"nameOfAFile"];
//clearing or creating (NSFileHande doesn't support creating a file it seems)
NSString *nothing = @""; //remember it's CLEARING! so get rid of it - if you want keep data
[nothing writeToFile:appFile atomically:YES encoding:NSUTF8StringEncoding error:nil];

//creating NSFileHandle and seeking for the end of file
NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:appFile];
[fh seekToEndOfFile];

//appending data do the end of file
NSString *dataString = @"All the stuff you want to add to the end of file";        
NSData *data = [dataString dataUsingEncoding:NSASCIIStringEncoding];
[fh writeData:data];

//memory and leaks
[fh closeFile];
[fh release];
[dataString release];
于 2011-03-23T11:14:30.783 に答える