Dropbox(http://www.dropbox.com/)和expandrive(http://www.expandrive.com/mac)等應用程序使用什麼技術在每個平臺上的本地文件系統中構建功能?任何人都可以提出任何可以在所有主要平臺上重複使用代碼的任何內容嗎?爲linux,mac,windows開發「文件系統」
我只在Linux上看過FUSE到目前爲止,我喜歡我所看到的。
Dropbox(http://www.dropbox.com/)和expandrive(http://www.expandrive.com/mac)等應用程序使用什麼技術在每個平臺上的本地文件系統中構建功能?任何人都可以提出任何可以在所有主要平臺上重複使用代碼的任何內容嗎?爲linux,mac,windows開發「文件系統」
我只在Linux上看過FUSE到目前爲止,我喜歡我所看到的。
實現一個虛擬文件系統是非常特定於OS。原因是驅動程序的體系結構在類Unix操作系統和Windows中不同。
爲避免編寫自己的驅動程序,可以使用用戶模式文件系統工具包。在Linux,BSD和MacOS上分別存在FUSE和OSXFUSE(現在非活動的MacFUSE的分支)。在Windows上,我們使用了Callback File System。
Dropbox目前沒有虛擬文件系統,但只有外殼擴展(afaik他們計劃創建一個虛擬磁盤,但我不知道他們已經決定)。
關於文件更改的跟蹤方式:有幾種方法。最簡單的方法是掃描定時器上的目錄並比較時間戳和文件大小。接下來,可以使用FindFirstChangeNotification WinAPI函數。最複雜和最可靠的方法是使用文件系統過濾器驅動程序。在Windows上,我們可以使用CallbackFilter。在MacOS X和Linux上,您可以獲得類似於FileSystemWatcher在.NET/Windows中提供的後通知。特別是在Linux上,可以使用inotify。
你在做什麼是usrspace文件系統。我不知道是否有適用於在所有實現用戶空間文件系統的統一解決方案(或最全的)平臺(可能不是),但這裏有一個出發點:
我不熟悉所有的人,所以我不知道是多麼容易編寫代理/接口,這樣你就可以無縫地在平臺獨立中實現文件系統ndent的態度。無論如何,文件系統應該支持的操作(在某種程度上)對於每個人來說都是相同的(開放,讀取,寫入等),所以乍一看這似乎是一個簡單的開始(即使用C預處理技術編碼,雖然你可能想看看C++ boost庫,它們應該是高度平臺獨立的,並提供一些很好的平臺獨立開發工具)。
祝你好運!
它在Windows上很容易監聽文件的變化: http://msdn.microsoft.com/en-us/library/atwhk15d(v=vs.80).aspx
我遇到過類似的問題:開發「跨平臺」文件系統。
這是一個Mac OS FUSE上實施的實例: http://www.macupdate.com/app/mac/23729/macfuse
投寄箱客戶端不實際實現的文件系統,它只是檢查和更新現有的文件。 FUSE做了非常不同的事情。 – 2011-01-29 16:05:33
一般來說,最好的代碼重用最好通過考慮周全的架構和問題來實現。而且,當然,在多平臺開發的情況下選擇編程語言/框架。 – 2011-01-29 16:09:20
在保管箱的情況下......一般來說他們如何檢測文件已被修改?我真的不想進入他們的技術細節,但我很好奇他們是否只是在做一些天真的事情,比如掃描修改過的時間戳的文件,或者更復雜的東西,比如當文件是實現某種通知/回調時改性。後一種情況會更有趣,我想知道它是否可以在任何特定平臺上使用。 – mcot 2011-01-29 16:14:06