如果文件已经存在并且您尝试写入文件会发生什么?

时间:2011-06-29 09:54:12

标签: iphone objective-c ios

是否会覆盖写入或写入失败?

NSData * pdfData = [[NSData alloc] initWithData:[PDFImageConverter convertImageToPDF: [image image]]];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString * filename = sharedManager.localFileName; //file name already exists
    NSString *pdfPath = [documentsDirectory stringByAppendingPathComponent:filename];
    [pdfData writeToFile:pdfPath atomically:YES];
    [pdfData release];

3 个答案:

答案 0 :(得分:10)

如果写成功,它将被覆盖。请注意,如果atomically设置为YES,则写入失败时原始文件不会被损坏。如果atomically设置为NO,它将会。

答案 1 :(得分:2)

如果你想检查文件是否存在,并想在存储另一个pdf之前删除,那么以下是代码

BOOL success = [FileManager fileExistsAtPath:zipPath];
    if(success){
        [FileManager removeItemAtPath:zipPath error:&error];
    }

答案 2 :(得分:0)

在这种特殊情况下,它会覆盖。但是还有其他一些框架' API,将数据写入现有文件将失败。 例如,

[[PHAssetResourceManager defaultManager] writeDataForAssetResource:toFile:options:completionHandler:];

因此API与API不同。