为linux,mac,windows开发"文件系统"

mco*_*cot 12 filesystems

Dropbox(http://www.dropbox.com/)和expandrive(http://www.expandrive.com/mac)等应用程序使用哪些技术在每个平台上的本地文件系统中构建功能?任何人都可以提出任何可以在所有主要平台上重复使用代码的建议吗?

到目前为止我只在linux上查看了FUSE,我喜欢我所看到的.

Eug*_*its 5

实现虚拟文件系统非常特定于操作系统.原因是驱动程序的体系结构在类Unix操作系统和Windows中是不同的.

要避免编写自己的驱动程序,可以使用用户模式文件系统工具包.在Linux,BSD和MacOS上分别存在FUSE和OSXFUSE(现在不活动的MacFUSE的分支).在Windows上,使用我们的回调文件系统.

Dropbox目前没有虚拟文件系统,只有shell扩展(他们计划创建一个虚拟磁盘,但我不知道他们已经决定了什么).

关于如何跟踪文件更改:存在多种方法.最简单的方法是在计时器上扫描目录并比较时间戳和文件大小.接下来,可以使用FindFirstChangeNotification WinAPI函数.最复杂,最可靠的方法是使用文件系统过滤器驱动程序.在Windows上,我们可以使用CallbackFilter.在MacOS X和Linux上,您可以获得类似于FileSystemWatcher在.NET/Windows中提供的后通知.特别是在Linux上,可以使用inotify.