目前我正在开发基于FUSE的文件系统,它从云端加载文件并存储在本地缓存中。
在用户端我使用obj-c框架,它包装了Fuse C高级API。
用户可以在已安装的驱动器列表中查看云存储中的所有文件。它只是'ghost'文件,实际上并没有存储在本地缓存中。
当用户双击文件时,开始下载文件。 在引擎盖下,我阻止来自fuse的每个'readFileAtPath'调用,直到加载了请求的文件数据块。
这会导致Finder和其他应用程序出现不同的冻结问题。
例如,当文件加载和读取调用被阻止时,'contentsOfDirectoryAtPath'也被阻止 - 用户无法浏览驱动器,它显示为空,或文件夹内容不完整。
当用户点击文件时,我无法回复错误,我应该下载并提供内容。
现在我在想,这是实现这种功能的正确方法吗? 有类似要求的人谁解决了这些问题?
感谢任何想法。