2011-06-29 4 views
5

書面で処理されるか、書込みに失敗しますか?ファイルがすでに存在し、書き込みしようとするとどうなりますか?

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

あなたの場合、ファイルは上書きされます。ファイルが既に存在するかどうかは、NSFileManagerを使ってテストできます。 – SVGreg

答えて

9

書き込みが成功すると上書きされます。 atomicallyがYESに設定されている場合、書き込みが失敗した場合、元のファイルは破損しません。原子的にNOに設定されている場合、それが実行されます。

2

あなたは、ファイルが存在するかどうかを確認したいと別のPDFファイルを保存する前に削除したい場合は、次のようにこの特定のケースでは、コード

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

あり、それが上書きされます。しかし、いくつかの他のフレームワークのAPIがあります。既存のファイルへの書き込みデータは失敗します。 たとえば、

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

APIとAPIが異なるためです。

関連する問題