結構化儲存 復合文件 永久物件

2021-04-17 21:14:58 字數 1324 閱讀 4762

這幾天又複習了一下去年學習的com知識,總算是稍許理解了com擴充套件中的結構化儲存、復合文件和永久物件機制。

一、結構化儲存的核心概念

結構化儲存在檔案系統基礎之上,又建立了乙個儲存系統,具體來說,是在普通檔案內建立了一套儲存系統(結構)。檔案系統可以看成是一棵樹,樹上有子結點,子結點可以使檔案或目錄,而每個目錄又是棵子樹,子樹下面也有檔案或目錄。結構化儲存系統與檔案系統極其相似,只不過它以單個普通檔案作為介質,也就是說可以在乙個磁碟檔案內建立乙個結構化儲存系統(結構)。結構化儲存結構也可以抽象成乙個樹形層次結構,在這棵樹上有兩種節點:儲存物件(storage object)和流物件(stream object)。對應於檔案系統,儲存物件好似目錄,流物件好似檔案;同樣的,儲存物件如目錄一樣不包含資料,只包含此儲存物件所包含的子儲存物件及流物件資訊,資料則由流物件儲存。最後,結構化儲存結構中還有乙個根儲存物件(root storage object),也就是樹形層次中的根。

二、結構化儲存的實現——復合文件技術

前面只是介紹了com結構化儲存的概念或規範,不像com基本規範(只給出規範沒有給出具體實現),com也實現了結構化儲存。這一機制就是復合文件技術,具體來說,com實提供了istorage和istream介面,用以實現結構化儲存。我們可以簡單的呼叫stgcreatedocfile或stgcreatestorage(ex)來建立復合文件,通過istorage和istream介面建立儲存物件和流物件,從而構建整個儲存結構。另外,istorage和istream介面還提供了讀取資料,列舉儲存物件、流物件,刪除物件,獲取物件clsid等方法。

三、機構化儲存的意義

這一點,目前還沒有什麼感受。我查閱了一些com的書籍,大都認為結構化儲存使得com元件訪問資料資訊更為方便。不同的元件的資料資訊可以存在乙個復合檔案中,而讀寫時卻互不干擾。(還有什麼作用或意義,請您也一同指出來)

四、永久物件

a、什麼是永久物件,為什麼要實現永久性

首先,由名字可以知道這是乙個物件,具體的說是個com物件(即要使com物件具有久性質)。為什麼乙個com物件要實現永久性質?那是因為許多com物件都有一些屬性或狀態資訊,在使用該com元件完以後可能以後還要繼續使用,這時,com物件的屬性或狀態資訊就需要維護好。

b、怎樣實現永久性

要實現com物件的永久性,當然要儲存好物件的狀態資訊,儲存到那裡?同樣com也為開發人員實現了永久介面。根據狀態資訊儲存的介質不同,提供了四個永久介面:ipersiststorage、ipersiststream、ipersistfile、ipersiststreaminit,這四個介面提供了讀寫com物件狀態資訊的方法。

c、如果你的com物件要求具有永久性,只需要讓你的物件實現ipersist***介面即可,這還不簡單嘛?

結構化檔案儲存

json 正規表示式 regularexpression,re re練習 xpath 根元素 乙個檔案內只有乙個根元素 子元素屬性內容 注釋 可以 不可以,注釋在標籤內 可以,注釋內容可以有乙個短橫線 不可以,雙短橫線只能出現在開頭或結尾 可以,三短橫線只能出現在開頭 不可以,三短橫線只能出現在開頭...

7 3 結構化文件表示

7.3 結構化文件表示 我們將在這一節設計的資料結構從 html 格式獲得靈感,這是大家熟悉的,並成功建立文件的語言。就像 html,我們的表示有幾種型別的內容,並且可能以適當的方法巢狀某些部分。圖 7.3 顯示了帶注釋的示例文件,它可以給你乙個概念,格式包括哪些內容。有兩種不同的部分。簡單的部分,...

DOC復合文件的儲存結構

引用自中國硬碟基地 復合文件和fat檔案系統有許多相似的地方,學習過程中可以對比fat檔案系統進行學習 主扇區配置表 mast 記錄的是sat占用扇區情況,扇區的編號多少 即扇區sid 扇區配置表 sat 記錄的是乙個流占用扇區的情況,乙個流占用哪些扇區,哪些扇區的sid是多少 短扇區配置表 ssa...