Что произойдет, если файл уже существует, и вы пытаетесь записать его?

будет ли он написан или напишет сбой?

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 ответов


Он будет перезаписан, если пишет успешно. Обратите внимание, что если атомарно установлено значение да, исходный файл не будет поврежден при сбое записи. Если атомарно установлено значение нет, оно будет.


Если вы хотите проверить, существует ли файл или нет, и хотите удалить перед хранением другого pdf, то ниже приведен код

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

в этом конкретном случае он будет перезаписан. Но есть API некоторых других фреймворков, записать данные в существующий файл не удастся. Например,

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

таким образом, он отличается от API к API.