2

ファイルを検索する NSFileManager があり、ファイルが存在しない場合は作成し、存在する場合は書き込みます。しかし、私が望んでいるのは、ファイルが存在する場合、ファイルに書き込まないことです。これが私のコードです。

NSString *docPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSLog(@"%@", docPath);
NSString *results=[docPath stringByAppendingPathComponent:@"results.csv"];

if (![[NSFileManager defaultManager] fileExistsAtPath:results]) {
    [[NSFileManager defaultManager]
     createFileAtPath:results contents:nil attributes:nil];
}
NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:results];
[fileHandle seekToEndOfFile];
[fileHandle writeData:[save dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];
NSLog(@"info saved");

どうすればこれを行うことができますか?

4

2 に答える 2

2

Flexicoder の回答を受け入れる必要saveがありNSStringますが、明らかに、これを少し単純化できます。

NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *results = [docPath stringByAppendingPathComponent:@"results.csv"];

if (![[NSFileManager defaultManager] fileExistsAtPath:results])
    [save writeToFile:results atomically:YES encoding:NSUTF8StringEncoding error:nil];
于 2013-01-31T06:48:18.313 に答える
1

すべてのコードを if ステートメントで囲みます

NSString *docPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSLog(@"%@", docPath);
NSString *results=[docPath stringByAppendingPathComponent:@"results.csv"];

if (![[NSFileManager defaultManager] fileExistsAtPath:results]) {
    [[NSFileManager defaultManager]
 createFileAtPath:results contents:nil attributes:nil];
    NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:results];
    [fileHandle seekToEndOfFile];
    [fileHandle writeData:[save dataUsingEncoding:NSUTF8StringEncoding]];
    [fileHandle closeFile];
    NSLog(@"info saved");
}
于 2013-01-30T10:40:04.597 に答える