如何在启用沙盒的应用程序中以编程方式删除应用程序文件夹中的文件
Posted
技术标签:
【中文标题】如何在启用沙盒的应用程序中以编程方式删除应用程序文件夹中的文件【英文标题】:How programmatically delete files inside application folder in a sandbox enabled app 【发布时间】:2014-02-12 09:12:24 【问题描述】:我正在尝试从我的 Cocoa 应用程序中删除应用程序文件夹中的文件。通过启用沙盒模式,我无法删除应用程序文件夹中的文件。
此沙盒模式有一些选项可用于启用对下载、图片、电影、音乐和用户选择的文件的读/写访问。
在此之前,我为用户选择的文件启用了读写访问权限,并使用 NSOpenPanel 完成了我的删除操作。它工作正常并删除应用程序文件夹中的文件,但每次运行我的应用程序时它都会打开面板。在这里,我不希望任何用户交互/权限来删除应用程序文件夹中的文件。是否有任何解决方案可以删除具有上述约束的文件。
【问题讨论】:
您要删除的文件是您的应用临时使用和创建的?如果是的话,为什么不直接使用临时目录呢? 不,它不是由我的应用创建的。我有一个第三方可执行文件将创建这个临时文件。我必须使用该临时文件的内容,最后我必须在使用后删除。 @santhosh:如何允许使用 NSOpenPanel 进行访问???你能帮帮我吗??? 【参考方案1】:你需要使用Security-Scoped Bookmarks:
您的应用对其容器之外的文件系统位置的访问(通过用户意图(例如通过 Powerbox)授予您的应用)不会在应用启动或系统重新启动后自动保持。当您的应用重新打开时,您必须重新开始。 (唯一的例外是在您的应用程序终止时打开的文件,由于 OS X 恢复功能,这些文件仍保留在您的沙箱中)。
【讨论】:
我在我的应用程序中使用了这个安全范围的书签。它工作正常,直到我的应用程序终止。但是当我重新启动我的应用程序时它没有保留。当我在不使用 powerbox 的情况下重新启动我的应用程序时,是否有可能保留此书签? 我在应用重新启动时也使用 nsuserdefaults 保留了此书签。感谢您的帮助。我也提到了这个链接***.com/questions/18711049/…以上是关于如何在启用沙盒的应用程序中以编程方式删除应用程序文件夹中的文件的主要内容,如果未能解决你的问题,请参考以下文章