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