2011-06-29 43 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

如果寫入成功,它將被覆蓋。請注意,如果以原子方式將其設置爲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。

相關問題