OSX Finder中的“虚拟文件”仅在我的应用程序运行时出现,可能吗?

Posted

技术标签:

【中文标题】OSX Finder中的“虚拟文件”仅在我的应用程序运行时出现,可能吗?【英文标题】:"Virtual Files" in OSX Finder that only appear when my Application runs, possible? 【发布时间】:2012-11-06 21:46:24 【问题描述】:

有没有办法“挂钩”到 OSX Finder 以执行以下操作:

当我的应用程序启动时,用户会在他的 Finder 中看到一个由我的应用程序创建的文件夹。在此文件夹中,用户可以看到来自多个文件夹的文件...用户在我的应用程序中指定的多个文件夹中的多个文件的统一视图。 因此,在这个“统一文件夹”中不是真正的文件,它们仍然在原始文件夹中,但是用户在这个文件夹中看到它们,就好像在这个新文件夹中有他所有的真实文件一样。所以不涉及复制或移动。

老实说,我不知道这是否可能以及我应该在 Cocoa SDK 中寻找什么。也许有 Finder 本身的 API 或其他方式?!

问候

twickl

【问题讨论】:

【参考方案1】:

第一个选项是您的应用程序可以为原始文件创建别名。 Finder 将在图标上方显示一个小箭头“徽章”,因此很明显它们不是原始文件,而是它们的别名。

如果您不喜欢创建硬链接的图标上的徽章,可能会给您想要的。

Mac OS X 提供了与 UFS (Unix) 相匹配的 HFS+ (Mac) 文件系统的视图,您可以访问硬链接和符号链接。后者被 Finder 处理为类似于别名,但前者与原始文件无法区分,因为它们原始文件 - 在 Unix 文件系统下,目录中的文件只是一个参考(inode number) 到真实文件,目录中的每个条目只是到实际文件的硬链接,并且文件可以有任意数量的硬链接(当链接计数下降时文件被删除到 0,如果有帮助,请考虑保留/释放模型。

在 Cocoa 级别 NSFileManager 具有创建硬链接的方法,或者您可以使用 Unix 级别的 link(2) 函数。

【讨论】:

感谢您的回答,这听起来正是我想要的。然而,一个小问题:你知道苹果的沙盒是否会成为这个问题吗?它会拒绝从用户目录中的文件创建硬链接吗? 如果您对源和目标有适当的权利,它似乎不应该被禁止;但要知道沙盒在任何特定 OS X 版本中的作用的唯一方法就是尝试一下。

以上是关于OSX Finder中的“虚拟文件”仅在我的应用程序运行时出现,可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何安装 Finder Sync Extension 以使其与 Finder 持久集成?

sh 使用OSX Finder Quicklook预览所有纯文本文件。方便的操作快捷方式需要为OSX Finder的Quick安装QLStephen插件

无法通过替换Finder中的图像文件来替换图像

Android 仅在应用程序中更改语言:某些字符串未正确翻译

iCloud 仅在应用启动时更新

如何在我的站点中分发我的 OSX 命令行应用程序?