資源檔案剖析

2021-09-05 14:46:24 字數 1585 閱讀 8721

資源檔案的定義是什麼?

簡單點的說法就是程式中可以使用的資料,象:字串,或二進位制資料等等,實際上可以包含任何型別的檔案。

資源檔案可以有多個語言版本,這樣在開發全球化應用程式時就很重要。這個特性是通過system.resources空間下的resourcemanager類來完成需要在什麼時候呼叫那個版本的。在vs.net中將乙個檔案的屬性設定為embedded resource就可以使資源被嵌入到assembly中了。

資源檔案包含那幾種型別?

system.resources 空間支援三種資源檔案:

.txt 檔案,只能有字串資源。因為不能被嵌入到 assembly 中,所以很容易暴露,被客戶修改。最大缺點是僅支援字串資源,所以不推薦使用。resx 檔案,由 xml 組成,可以加入任何資源,包括二進位制。同樣不能被嵌入到assembly 中。在 system.resources 名字空間中有專用讀寫的類。vs.net 建立這種檔案然後將其轉成 .resources 檔案並根據設定將其嵌入到 assembly 中。.resources 檔案,pe格式,可以加入任何資源。唯一可以被嵌入到 assembly 的檔案,在 system.resources 名字空間中有專用讀寫的類。 

怎麼呼叫資源檔案?

通常的做法是要將.txt 檔案.resx 檔案等轉化成.resources 檔案在通過resourcemanager來進行呼叫,但是我們也可以不採用那種方式,我覺得比較麻煩,象下面這樣做我覺得好些:

我們可以不通過乙個資源檔案而直接將一資源嵌入到 assembly 中。這可以在 vs.net 中通過設定一檔案的 build 屬性為 embedded resource 實現。在這種情況下 resourcemanager 就沒有用了,因為它只能獲取 .resources 資源檔案。那麼怎麼呼叫這類的資源呢?我們需要利用一些 reflection 中的特徵。我們只要了解一些 system.reflection.assembly 這個類中的一些函式就可以了。有三個相關函式,不過我們只需要 assembly.getmanifestresourcestream 這個函式。這個函式將一嵌入到assembly 中的資源以 stream 的方式返回,而我們可以將這個 stream 轉成在 .net 中可用的物件。比如,如果嵌入資源是一,那麼我們可以利用 new bitmap(stream) 這個 bitmap 的 constructor 獲得這個資源的 bitmap 物件;如果我們嵌入的是一文字檔案,我們可以使用streamreader將它的內容讀出來。

下面給乙個簡單的以文字檔案為資源的demo

step1: 資源檔案

將檔案嵌入assembly,上面已說了怎麼做

step2: 呼叫資源檔案

public stream getembeddedresource()

解釋一哈

//resourecedemo表示命名空間,test.txt文字檔案名稱

private void button1_click(object sender, system.eventargs e)

當然,以格式的方式也一樣的操作。不在舉例了,最後有個工具大家不要忘了:

resgen.exe 專門用來做資源檔案型別之間的轉換。支援 .txt <-> .resx <-> .resources 之間的轉換。

C 資源檔案

獲取資源檔案 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system...

rc資源檔案

resource complier 中詳細描述了資源檔案的編寫與使用.包括巨集的使用.舉例 在debug模式下包含乙個debugdll,在release 模式下包含另乙個releasedll ifdef debug dictionaryonlinedll.dll data debug diction...

操作資源檔案

二 visual c 如何建立資源檔案 resourcewriter rw new resourcewriter my.resources rw.generate 產生乙個名稱為 my.resources 的資源檔案。三 在資源檔案中新增資源 1 加入位元組陣列,語法格式為 public void ...