有沒有辦法打開一個文件,只有在文件不存在之前打開才能成功打開?CreateFile w/CREATE_NEW相當於iOS?
我正在做一些線程化的工作,其中一些文件必須在某個時刻創建。隨機文件名可能有所幫助,但我想,以確保沒有任何碰撞提前
有沒有辦法打開一個文件,只有在文件不存在之前打開才能成功打開?CreateFile w/CREATE_NEW相當於iOS?
我正在做一些線程化的工作,其中一些文件必須在某個時刻創建。隨機文件名可能有所幫助,但我想,以確保沒有任何碰撞提前
感謝我有你想什麼來完成,但你可以做的不多的想法如下,以檢查是否存在文件: -
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *yourFile = [docPath stringByAppendingPathComponent:@"yourFilewithExtension"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:yourFile];
「FILEEXISTS」 將文件是否存在其他無返回值是。
fileExistsAtPath檢查將只保證在函數執行過程中的某一點存在。但是,我想要實現的是打開一個文件進行寫入,如果它不存在,它將打開(然後創建該文件),否則將失敗。因此,即使兩個線程嘗試相同的文件名,只有一個線程會成功獲取寫入文件句柄 –
附加「×」,在模式串
最後,作爲一個擴展標準(並且因此可能不是 便攜式),模式串可以以字母
x'', which insists on creating a new file when used with
瓦特「結束」或``一個''。如果存在路徑,則返回錯誤 (這與使用open(2)指定O_EXCL 等效)。
http://developer.apple.com/library/Mac/#documentation/Darwin/Reference/ManPages/man3/fopen.3.html
在Windows平臺上所描述的功能是通過與CREATE_NEW標誌CreateFile函數。文檔:http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx –