【问题标题】:Mac OS X File / Folder Management: When to Copy instead of MoveMac OS X 文件/文件夹管理:何时复制而不是移动
【发布时间】:2010-07-14 17:24:49
【问题描述】:

Finder 使用某种规则来确定是否可以移动或复制项目。拖动项目后,在某些情况下 Finder 会显示拖动复制光标。 API 中的这些规则是否可用?用 Spotlight-Metadata、NSURL 和 NSFileManager 检查:没有结果。

这是我想出的:

  • 如果文件夹包含“.localized”文件:文件夹被复制
  • 如果文件夹列在 NSSearchPathDirectory 中的任何位置

我的假设对吗?还是与我认为是“锁定”标志的 NSURLIsSystemImmutableKey 或 NSURLIsUserImmutableKey 有关?

此外,还取决于各种其他元数据,例如写权限和锁定标志:

来源:

  • 移动只读文件:可以移动
  • 移动只读文件夹需要管理员登录

  • 移动锁定的文件会创建一个副本

  • 移动锁定的文件夹会创建一个副本
  • 移动带有锁定文件的文件夹:可以移动
  • 移动带有锁定和解锁项目的选择会创建一个副本

  • 移动 Dropbox 只写文件夹:可以移动

  • Finder 中不存在只写文件

  • 在没有任何权限的情况下移动文件:可以移动(因为移动权限取决于封闭文件夹)

  • 在没有任何许可的情况下移动带有文件的文件夹:移动是可能的(只要是移动,复制它需要登录)

  • 如果文件夹包含“.localized”文件:文件夹被复制

  • 如果文件夹列在 NSSearchPathDirectory(主目录,...)中的任何位置,则会被复制

  • 如果文件夹包含另一本书:可以移动

目标:

  • 将项目移动到 Dropbox 会创建一个副本
  • 将项目移动到锁定的文件夹中:不可能
  • 将项目移动到只读文件夹:要求登录

【问题讨论】:

    标签: cocoa macos filesystems


    【解决方案1】:

    *) 关于 Finder:如果将文件或目录从一个卷拖到另一个卷,它将(默认情况下)被复制。如果在同一卷上执行该操作,则将(默认情况下)移动文件或文件夹。作为对卷上的文件操作的附带说明:在不同的文件系统中“移动”事物的行为再次不同。通常,移动文件或目录并不意味着之后“复制”和“删除”原始文件 - 只是文件系统中的链接通常会被修改,但有时,它的行为实际上完全一样。

    *) 此外,请注意对象权限:如果对该源文件或目录(以及其中的内容)的文件系统权限不允许对其进行写操作,则会再次对其进行复制。

    【讨论】:

    • 感谢您的回答。关于写权限的第二点并不完全正确:可以在没有写权限的情况下移动文件。它取决于封闭的文件夹。我在我的问题中添加了更多发现。所以很明显,在实际执行之前没有 API 可以找到它。苹果文档说:尝试然后优雅地处理错误。
    猜你喜欢
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2015-07-10
    • 2015-07-26
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多