從資源檔案裡載入檔案(C )

2021-04-21 15:02:26 字數 1592 閱讀 5182

1.概述:

資源檔案很早就有了,在。net時代裡這個東西也不算稀奇,在進行多國語言化的時候

通常把不同翻譯的文字存放到資源包裡。以前資源檔案除了放字串以外,還可以放檔案。不過在c#的工程裡面,資源管理面板是空的(vc++工程裡資源面板可以使用),無法直接編輯資源屬性,不過每個winform都會帶乙個.resx的檔案,這個檔案就是winform的資源檔案。如果通過新增新專案的方法,給工程裡新增資源檔案的話,產生的也是.resx檔案。估計.resx檔案是.net給c#新設計的資源檔案格式。.resx以xml格式儲存,主要存放字串。對於檔案我還沒有找到新增到.resx的方法,因此我們需要用其它方法把檔案打包到資源檔案裡面。

2.資源檔案打包

。net除了.resx資源檔案格式外,還有乙個.resources的資源檔案格式。它可以支援把檔案的載入,需要做通常的做法如下:

system.resources.resourcewriter

rw = new

resourcewriter(@"../../abc.resources");

rw.addresource("abc", new

byte[10000000]);

rw.generate();

rw.close();

建立乙個resourcewriter的物件用於寫資源檔案。檔案的字尾名必須是.resources,不讓其它的系統無法識別。然後是通過addresource的方法寫資源資訊,這個資訊可以是乙個字串,也可以是乙個byte陣列,甚至可以是乙個物件(image)。新增好以後就是generate和close了。這樣執行程式後,資源檔案就製作完成了。

如果不需要把這個資源檔案打包到exe程式或者dll程式裡面,可以使用

system.resources.resourcereader讀取資源檔案資訊。

3.獲取資源檔案

資源檔案打包好以後,下一步是把資源檔案整合到專案裡。方法有兩個,乙個是用控制台的方式編譯專案,通重載入資源檔案的方式把資源載入到exe裡,另外乙個簡單很多,就是把直接把資源檔案載入到工程裡,vs會根據字尾名識別出來載入的檔案屬於資源檔案,在進行編譯的時候會自動把這個檔案打包到資源檔案裡。如果編譯後發現資源檔案沒有加到exe檔案,可以設定資源檔案的屬性,把build action的屬性設定為embedded resource。

資源檔案成功加到exe檔案後,下一步就是在程式裡讀取資源檔案。

system.resources.resourcemanager

rm = new

system.resources.resourcemanager("resunce.abc", this.gettype().assembly);

byte bit = rm.getobject("abc") as

byte;

通常是建立乙個resourcemanager的物件,第乙個引數是資源的名字,這裡要注意的是「resunce」是編譯的時候,元件(命名空間)名字,「abc」是資源檔案的名字。如果前面不是通過vs的工程檔案進行編譯,而是通過控制台方式直接編譯,那麼資源的名字不需要帶元件的名字,只是「abc」就可以了。原因嗎,我估計可能是vs在進行編譯的時候,帶了某些引數(確定了元件名),所以在專案讀取資源檔案的時候需要帶元件名。

4.資源檔案打包工具

從資源檔案裡載入檔案或讀取資源(C )

從資源檔案裡載入檔案 c 用途 1.在進行多國語言化的時候 通常把不同翻譯的文字存放到資源包裡.2.將打包進 dll的時候 icon 等,自定義控制項.資源檔案格式 resx resources 打包資源檔案 system.resources.resourcewriter rw new resour...

springboot中,如何從資源檔案載入檔案

核心還是io操作,主要包括以下兩個 public jsoninformationhereasreturntype getjsoncontent before public voidt1 catch ioexception e 在本地環境下,resourceutils 可以正常讀取到我需要的檔案,但是...

iOS資源檔案載入

資源檔案配置 s.resource bundles 其中resource bundles中的bundle檔案是以陣列的形式處理 其中bundlename是自定義的 後面是對應路徑下的資源檔案 可以把resource下面對應不同的xib檔案和image檔案 資源檔案載入 對於xib和image載入的方...