2009-08-05 26 views
4

我正在尋找一種將元數據添加到文件的好方法。 dsofile.dll適用於NTFS。元數據丟失,當一個人丟棄一個FAT32共享副本(它使用NTFS隱藏流,我猜)。 Microsoft Word文檔包含不會丟失的元數據,他們如何做?與FAT相似,通過使用dsofile創建的所有元數據的電子郵件發送文件(以及使用Windows資源管理器手動創建的元數據)。單獨的元數據文件不是一個選項。它必須與標準的Windows技術兼容。如果我向Outlook發送文件並將其發回,則不應丟失元數據。dsofile c#API/NTFS自定義文件屬性

(所需的元數據,實際上只有一個ID)

+0

不會將所有元數據存儲爲文件的一部分嗎? – 2009-10-02 13:08:25

+1

是的。 MS-Word以.doc文件格式存儲元數據本身。 NTFS隱藏數據流是一個獨特的元數據存儲機制,它不需要文件格式本身就可以知道元數據。缺點是,複製文件時,樸素的應用程序不會從NTFS隱藏流複製元數據。 – Cheeso 2010-10-24 14:36:38

回答

1

任何解決方案都是格式相關的。 MS OFFice文件是(全部)複合文件,並且在那裏有屬性的位置。在某些格式中(例如PE文件),只要將數據追加到文件末尾是安全的,如果您知道如何在以後閱讀它們。在ZIP文件中,您可能在目錄中找到一個位置,或者只是將一個助手文件與您的數據一起添加到存檔中。其他格式無法忍受這一點,你需要找到自己的方式來解決問題。

實際上,文件名也可以作爲你的ID的好佔位符。

如果您需要將文件存儲在某處,但不需要該文件可以被外部應用程序保持可讀,則可以將它們打包到ZIP存檔或使用類似我們的SolFS 庫的文件。

+0

對,在zip格式中,目前還沒有正式的機制將NTFS元數據從「隱藏數據流」存儲到zip條目中。通常這個NTFS元數據根本不存儲在zip中。 – Cheeso 2010-10-24 14:34:20

0

怎麼樣的標準特性,而不是定製DSOFile屬性?即評論,作者等?他們被抹去了嗎?

不知道它的理想,但我們已經得到的一種方式是,我們有一個工具,將採取DSOfile屬性並保存一個文本文件,然後通過電子郵件發送文件,並在另一端用戶運行一個工具從文本中重新導入dsofile屬性。

2

問題是所有文件系統都提供文件的單流視圖作爲最大公分母。通過這個暴露文件「內容」的界面,您可以讀取或存儲屬性,並通過樸素系統(或用戶)實用程序將它們與「內容」一起傳輸。例如,Windows中的CopyFile將小心丟失備用數據流,並且沒有「影子文件」的概念。

問題是「內容」的格式是否允許任意添加屬性。

某些格式允許任意內容(例如,MSFT的docfile,也就是.doc/.xls/etc)。有些允許有限的內容(.mp3,.jpg,.exe)。

有些完全是SOL(.txt,.bmp)。