【问题标题】:How to tell if a file or directory can be renamed in OSX?如何判断文件或目录是否可以在 OSX 中重命名?
【发布时间】:2016-03-13 15:06:00
【问题描述】:

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

【问题讨论】:

  • 我已经尝试阅读NSFileManager的API,但是没有方法可以判断文件是否可以重命名。

标签: swift macos nsfilemanager


【解决方案1】:

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

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

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

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

$ xattr /System/
com.apple.rootless

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

【讨论】:

  • 谢谢,我回家试试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
相关资源
最近更新 更多