2013-07-25 78 views
0

我在那里我试图确定是否目录有写入拖动跟踪期间访问,但调用像NSFileManager.isWritableFileAtPath方法不起作用,因为它们返回的问题时/写访问,POSIX权限和沙箱在沙箱下写入权限。当拖动完成当前进程(我的应用程序)将承担的目录(如决定由POSIX权限)正常访问,但我需要提前知道什么实际的权限,所以我可以在拖动操作光标反映了这一。读拖动跟踪

我找到怎样用的NSFileManager POSIX的权限,但我无法找出如何读取距离值(回来像420十进制)的写权限部分。我认为会有一些简单的位掩码或帮助函数来转换值,但我无法在任何地方找到它们。

感谢您的帮助。

回答

1

#define s在包含文件<sys/stat.h>中可用 - 请参见手册第2节中的chmod。整数420是所有者的rw-r-r-- -r/w,读其他人。

+0

我看到的定义和阅读的人CHMOD,但我还是不明白,你怎么可以从任何整数得出一个写所有者面膜,如420例如有“S_IWUSR 0000200”。这是否意味着如果是“2”,任何数字的第三位都是用户可写的?谢谢。 – GenericPtr

+0

'#define'常量是您在问题中提到的位掩码。使用按位和操作等来测试个人权限,例如'如果((权限和S_IWUSR)!= 0)...' – CRD

+0

谢谢,我明白了,但现在我觉得沙箱,则返回相同的权限,因为我在Finder中看到。例如/开发人员将返回509(从NSFilePosixPermissions属性键),它与S_IWUSR是说不写,即使Finder中说读/写(STAT /开发商说drwxrwxr-X)。这意味着我甚至不知道如何获得沙箱外的原始权限。 – GenericPtr