我正在阅读关于Mac app沙盒的内容,我想知道当用户在NSOpenPanel或NSSavePanel中选择文件夹时到底发生了什么。 “App Sandbox Design Guide”给出了以下示例:
当应用的用户指定他们想要使用文件或文件夹时,系统会将相关路径添加到应用的沙箱中。比如说,例如,用户将
~/Documents
文件夹拖到应用程序的Dock磁贴上(或应用到应用程序的Finder图标上,或拖到应用程序的打开窗口中),从而表明他们想要使用该文件夹。作为响应,系统会将~/Documents
文件夹,其内容及其子文件夹提供给您的应用。
我不清楚这里的“内容”是什么意思。这仅限于查看文件夹中的文件而无法读取这些文件中的内容吗?或者这只是意味着应用程序将能够读取文档文件夹中的任何文件(递归)(例如,它可以读取~/Documents/Foo.txt
和~/Documents/Bar/Baz.txt
)?那么写操作(写入现有文件,删除一个文件或创建新文件或文件夹)呢?
答案 0 :(得分:7)
该应用可以读取所选文件夹及其子文件夹中的所有文件。对于新文件以及覆盖现有文件,写入也是如此。也可以删除文件夹(或您拥有所需权限的其他文件夹)范围内的新文件夹创建,文件夹移动。
简而言之,您可以自由地在此文件夹及其子文件夹中执行任何操作。
警告:当保存面板打开并显示Documents
作为目标时,它可能是~/Library/Containers/<app signature>/Data/Documents
。您可以更改位置,但是在文件成功保存但未找到~/Documents
后,我第一次感到困惑。