filesystems - 为 linux、mac、windows 开发 "File Systems"

标签 filesystems

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

到目前为止,我只研究了 Linux 上的 FUSE,我喜欢我所看到的。

最佳答案

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

为了避免编写自己的驱动程序,您可以使用用户模式文件系统工具包。在 Linux、BSD 和 MacOS 上,分别存在 FUSE 和 OSXFUSE(现在不事件的 MacFUSE 的分支)。在 Windows 上,我们的 Callback File System用来。

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

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

关于filesystems - 为 linux、mac、windows 开发 "File Systems",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837829/

相关文章:

linux - 硬链接(hard link)不会在 docker 容器中创建,即使它们与主机位于同一文件系统中

Linux 文件所有权和权限

linux/tmp 文件夹 + 如何知道文件是否会在重启后或一段时间后被删除

c# - 使用 EnumerateFiles 和多个过滤器(文件扩展名)读取文件

ubuntu - E : Unable to locate package gradle

windows - 在 Windows 中获取安全的临时文件夹

c - 存储子目录的引用

Android SD 卡文件系统

android - 是什么导致了ANR?

c - 如何理解d_hash()的函数?