对于第三方应用程序来说,该文件看起来像一个文件,但是读/写操作是通过程序过滤的。
具体来说,我想要做的是创建一个由多个其他文件组成的文件,第三方应用程序可以读取/写入该文件。它将是一个文本文件,边界只是指令标记或类似格式。当第三方写入此文件时,底层程序会将每个部分写入底层源文件。当第三方应用程序读取它时,它将根据底层文件的内容动态构建。
我对此有许多用途;最直接的用途是能够为 TaskPaper 获得一个 NEXTSTEPS.taskpaper 文件,该文件由来自许多不同项目 git repos 的许多 NEXTSTEPS.taskpaper 文件组成。
如果没有现有的此类工具,我打算尝试自己开发一个(可能使用 fsevents 并用 ruby 编写),并欢迎任何关于如何使用它的反馈。
编辑:我想知道是否有另一种可能性是使用保险丝。我想这会将我的“元文件”的位置限制到顶级 /Volumes/... 路径,但我可以接受。
答案1
被原帖者打败了,唉
Linux 有一层名为“FUSE”的层,用于在用户空间中写入文件系统,它已被移植到包括 OS X 在内的各种 BSD 中,以前是通过MacFuse;现在看来OSXFUSE是当前的实现。
FUSE 与您的“元文件”概念略有不同 - 它适用于整个文件系统,而不仅仅是单个文件,因此 API 有点低级。
但是,这比编写内核模块或 kext 要容易得多——有 Perl、Python、Ruby 绑定可用于编写自定义 FUSE 服务器。编写一个用于一个自动生成文件的简单 FUSE 文件系统可能需要几个小时。
(最流行的 FUSE 服务器是SSHFS,它使用 SFTP 连接到另一台服务器并将其公开为本地文件系统,但还有几十个 - ntfs-3g(流行的 NTFS 驱动程序);wikipediafs(将维基百科文章公开为文件);curlftpfs;fuseiso;...)