我目前以下列方式使用open()
NSData的文件寫入的方法寫出來的文件寫出來的文件:使用open(),使得文件權限是保證相同使用
NSString *path = @"/Users/enchilada/Desktop/file.txt";
int fd = open([path fileSystemRepresentation],
O_EXCL | O_CREAT | O_WRONLY,
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
我的問題是第三個參數。從某種意義上說,它是「正確的」,它在所有情況下都能保證獲得完全相同的許可,如NSData
的常規writeToFile:
方法?
我想在使用普通的open()
而不是使用Cocoa的方法寫出文件時獲得相應的「默認」權限。
我已經找到了上述權限(RW-RW-RW-)工作,因爲的umask實際上帶來了下來到(RW-R - R--)。但我的問題是:這是否總是有保證?我的第三個參數應該是什麼?
,我認爲通常你通過`0644`(如RW-R - R- - )作爲「open()」的權限,當你沒有特別需要不同的權限時。我只能猜測,但我會假設這就是'NSData`所做的。 – 2011-12-14 19:59:56
是的,這不會是一個錯誤的猜測,但我想完全確定;) – Enchilada 2011-12-14 20:04:44
要完全確定的唯一方法是以某種方式獲得對基金會的源訪問權,並且您永遠不會擁有該基金會。但是,如果您想要更低級別的方式來訪問文件,但仍然使用Cocoa,則可以使用[NSFileHandle](http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/ NSFileHandle_Class /),它提供了一個類方法,它將在一個路徑上創建一個文件並打開它進行寫入。人們可以認爲這與NSData的方法使用相同的默認權限。 – 2011-12-14 20:08:42