2011-06-29 10 views
5

¿Se borrará por escrito o fallará la escritura?¿Qué sucede si un archivo ya existe e intentas escribirle?

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]; 
+0

En su caso, el archivo se sobrescribirá. Puede probar si el archivo ya existe por medio de NSFileManager. – SVGreg

Respuesta

9

Se sobrescribirá si la escritura tiene éxito. Tenga en cuenta que si atómicamente se establece en SÍ, el archivo original no se dañará si falla la escritura. Si atómicamente se establece en NO, lo hará.

2

Si desea comprobar si existe o no el archivo y desea quitar antes de almacenar otra pdf, a continuación sigue es el código

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

En este caso particular, se sobrescribirá. Pero hay algunos API de otros marcos, los datos de escritura para archivar los existentes fallarán. Por ejemplo,

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

Por lo tanto, diferente de la API de API.

Cuestiones relacionadas