Filesystems 发展";“文件系统”;适用于linux、mac和windows
dropbox等应用程序使用哪些技术(http://www.dropbox.com/)和expandrive(http://www.expandrive.com/mac)用于将功能直接构建到每个平台上的本地文件系统中?有人能提出一些建议,在所有主要平台上实现最大限度的代码重用吗Filesystems 发展";“文件系统”;适用于linux、mac和windows,filesystems,Filesystems,dropbox等应用程序使用哪些技术(http://www.dropbox.com/)和expandrive(http://www.expandrive.com/mac)用于将功能直接构建到每个平台上的本地文件系统中?有人能提出一些建议,在所有主要平台上实现最大限度的代码重用吗 到目前为止,我只研究了linux上的FUSE,我喜欢我所看到的 您所追求的是usrspace文件系统。我不知道是否有统一的解决方案可以在所有(或大部分)平台上实现用户空间文件系统(可能没有),但这里有一个起点: 对于l
到目前为止,我只研究了linux上的FUSE,我喜欢我所看到的 您所追求的是usrspace文件系统。我不知道是否有统一的解决方案可以在所有(或大部分)平台上实现用户空间文件系统(可能没有),但这里有一个起点:
- 对于linux和(我认为只有一些)Unice:
- 对于windows:
- 对于mac os:
祝你好运!在Windows上很容易监听文件更改:
实现虚拟文件系统是非常特定于操作系统的。原因是驱动程序的体系结构在类Unix操作系统和Windows中是不同的 为了避免编写自己的驱动程序,您可以使用用户模式文件系统工具包。在Linux、BSD和MacOS上分别存在FUSE和OSXFUSE(现在不活动的MacFUSE的分支)。在Windows上使用我们的 Dropbox目前没有虚拟文件系统,只有shell扩展(他们计划创建一个虚拟磁盘,但我不知道他们决定了什么)
关于如何跟踪文件更改:有几种方法。最简单的方法是在计时器上扫描目录,并比较时间戳和文件大小。接下来,可以使用WinAPI函数。最复杂和最可靠的方法是使用文件系统筛选器驱动程序。在Windows上可以使用我们的。在MacOS X和Linux上可以获得发布通知,类似于FileSystemWatcher在.NET/Windows中提供的通知。特别是在Linux上,可以使用。我遇到过类似于您的问题:开发“跨平台”文件系统
这是Mac OS FUSE实现的一个示例:
dropbox客户端实际上并没有实现文件系统,它只是检查和更新现有文件。FUSE做了一些非常不同的事情。一般来说,最大限度的代码重用最好通过深思熟虑的体系结构和对问题的概括来实现。当然,在出现问题时,还可以选择编程语言/框架多平台开发。在dropbox的案例中……一般来说,他们是如何检测到文件被修改的?我真的不想深入了解他们的技术细节,但我很好奇他们是否只是在做一些幼稚的事情,比如扫描文件以获得修改后的时间戳,或者做一些更复杂的事情,比如实现某种修改文件时的通知/回调。后一种情况更有趣,我想知道在任何给定平台上是否可行。简单但不太可靠,并且有严重的限制。除了FUSE、Dokan、CBFS之外,还有Pismo文件挂载。PFM可用于在用户模式下在Mac和Windows上实现本机文件系统s、 和Linux。(完全公开:我是PFM的主要开发者。)