C 資源檔案(一)

2021-06-18 23:21:34 字數 2298 閱讀 7440

資源檔案概念

在 .net 中準備 

world-ready程式時需要三步:globalization 、localizability 和 localization。第三步的localization就是使用資源檔案最常見的地方。程式的邏輯介面需要與資源介面隔離,而資源介面就是我們所說的資源檔案。顧名思義,乙個資源檔案中當然全是資源,這裡所謂的資源就是程式中可利用的資料,譬如:字串、和任何二進位制資料,包括任何型別的檔案。

資源檔案可以有多種語言版本。如,乙個 strings.resources 檔案可以有英語版、簡體中文版、正體中文版等。 

resourcemanager可以自動根據檔名來確認呼叫哪個版本。不同的版本只要在檔名中添入

區域語言就可以了。比如:

strings.resources -------------- 預設版

strings.en-us.resources -------- 美國英語版

strings.zh-chs.resources ------- 簡體中文版

strings.zh-cht.resources ------- 正體中文版

所謂的預設版就是當找不到適當的資源版本時用的資源。預設檔案應當被嵌入到主 assembly 中,這樣就不會發生找不到資源的錯誤。在 vs.net 中將乙個檔案的屬性設為 embedded resource , 就可以使資源被嵌入到主 assembly 中。

資源檔案型別

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

(1).txt 檔案,只能有字串資源。因為不能被嵌入到 assembly 中,所以很容易暴露,被客戶修改。最大缺點是僅支援字串資源,所以不推薦使用。

(2).resx 檔案,由 xml 組成,可以加入任何資源,包括二進位制。同樣不能被嵌入到 assembly 中。在 system.resources 名字空間中有專用讀寫的類。vs.net 建立這種檔案然後將其轉成 .resources 檔案並根據設定將其嵌入到 assembly 中。

(3).resources 檔案,pe 格式,可以加入任何資源。唯一可以被嵌入到 assembly 的檔案,在 system.resources 名字空間中有專用讀寫的類。

資源檔案呼叫方法

resourcemanager 可以根據不同的 

uiculture設定返回不同的本地資源,我們只需知道呼叫資源用到它就可以了。接下來讓我們看看如何呼叫每一種:

(1).txt 檔案:不可以直接呼叫,得先將其轉換成 .resources 檔案才能使用。

(2).resx 檔案:可以用 

resxresourcereader來做讀取,但是這種方法不直觀,不推薦直接呼叫 .resx 檔案。正確的方法是將其轉換成 .resources 檔案,然後用 resourcemanager 作讀取工作。

注意如果是在 vs.net 中新增的 .resx 檔案,那麼它們自動被設為 embedded resource,轉成 .resources 檔案後被嵌入到 assembly 中。

(3).resources 檔案分成兩種情況:

1、被嵌入或編譯成 satellite assembly:使用resourcemanager來獲得在 assembly 中的資源。

2、單獨檔案,沒被編譯或嵌入到assembly:使用resourcemanager.createfilebasedresourcem

anager來獲得資源集(resourceset)。

(4)特殊情況:當直接嵌入一資源時,也就是說,不通過乙個資源檔案而直接將一資源嵌入到 assembly 中。這可以在 vs.net 中通過設定一檔案的 build 屬性為 embedded resource 實現。在這種情況下 resourcemanager 就沒有用了,因為它只能獲取 .resources 資源檔案。那麼如何呼叫這類的資源呢?不難,我們需要利用一些 reflection 中的特徵。別怕,不是讓你再學 reflection,其實我們只要了解一些 system.reflection.assembly 這個類中的一些函式就可以了。有三個相關函式,不過我們只需要 assembly.getmanifestresourcestrea

m 這個函式。這個函式將一嵌入到 assembly 中的資源以 stream 的方式返回,而我們可以將這個 stream 轉成在 .net 中可用的物件。比如,如果嵌入資源是一,那麼我們可以利用 new bitmap(stream) 這個構造方法獲得這個資源的 bitmap 物件。

C 資源檔案

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

c 資源檔案

參考 system.resources命名空間支援三種資源檔案 1 txt檔案,只能有字串資源。因為不能被嵌入到assembly中,所以很容易暴露,被窗戶修改。不可以直接呼叫,得先將其轉換成resources檔案才能使用 2 resx檔案,由xml組成,可以加入任何資源,包括二進位制,同樣不能被嵌入...

c 讀取資源檔案

全域性資源檔案 getglobalresourceobject string param1,string param2 讀取全域性資源檔案的方法 引數說明 param1 資源檔案類名 即資源檔名,不帶resx param2 鍵值名 區域性資源檔案 getlocalresourceobject str...