swift - 如何判断文件或目录是否可以在 OSX 中重命名?

标签 swift macos nsfilemanager

我正在编写一个小型 Mac 应用程序,它具有重命名文件或目录的功能。我想确定一个文件或目录是否可以重命名,如果不可重命名,我将不允许用户重命名它,例如某些系统目录:主目录中的“Downloads”、“Documents”或“Desktop”目录。问题是我如何确定它?

最佳答案

您列出的所有目录都可以重命名。 “不能重命名”和“大多数情况下不应该重命名”之间有很大区别。

如果您想要知名目录的列表(在大多数情况下不应重命名),它们列在 File System Programming Guide 中。 。用户主目录下具体有:

  • 应用程序 - 包含特定于用户的应用程序。
  • 桌面 - 包含用户桌面上的项目。
  • 文档 - 包含用户文档和文件。
  • 下载 - 包含从互联网下载的文件。
  • 库 - 包含用户特定的应用文件(隐藏在 OS X v10.7 及更高版本中)。
  • 电影 - 包含用户的视频文件。
  • 音乐 - 包含用户的音乐文件。
  • 图片 - 包含用户的照片。
  • 公开 - 包含用户想要分享的内容。
  • 网站 - 包含用户个人网站使用的网页。 (必须启用网络共享才能显示这些页面。)

在最新版本的 OS X 中,有些系统级目录实际上无法重命名(由于系统完整性保护)。您可以通过检查 com.apple.rootless 的扩展属性来检测这些,例如使用 xattr:

$ xattr /System/
com.apple.rootless

请参阅 attributesOfItemAtPath:error: 以使用 NSFileManager 读取这些属性。

关于swift - 如何判断文件或目录是否可以在 OSX 中重命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35971843/

相关文章:

ios - 异步调用时 UI 元素在 Segue 后缺少文本

java - Minecraft Coder Pack终端内存错误伪造[Mac]

cocoa - 如何将崩溃报告的电子邮件地址重定向到我的电子邮件(对于我的 cocoa 应用程序)

macos - 可以在mac os上以编程方式更改DNS吗?

swift - 打开文件对话框在 Swift 中崩溃

objective-c - 如何获取 cocoa 中目录的大小和可用空间?

ios - 如何判断购买了哪个IAP?

SwiftUI 在变量更改时调用函数

ios - NSSearchPathForDirectoriesInDomains NSUserDomainMask

ios - Swift 应用程序在设备上运行时崩溃 - dyld : Library not loaded: @rpath/libswiftCore. dylib