如何讀取嵌入的資源

2021-09-05 19:29:18 字數 1070 閱讀 3795

在程式設計的期間,我們通常會用到一些輔助的檔案,例如某些特定的xml架構檔案,或者樣式表,甚至一些簡單的文字檔案等等。那麼我們應該如何打包這些檔案呢?

讓我們來看看預設情況下是什麼樣子的:

我們有乙個文字檔案是testfile.txt,注意觀察它的生成操作是:內容。而且預設是不複製到輸出目錄的。也就是說,如果你編譯程式,你不會在輸出目錄中看到它。

那麼這樣會有問題嗎?當然會有,例如你的程式中需要使用該檔案,例如你想通過如下方式開啟它

filestream fs = new filestream("testfile.txt", filemode.open);

顯然,你需要把它複製到輸出目錄。那麼該如何做呢?

你一定也想到了吧?對的,你可以把那個"複製到輸出目錄"的屬性設定為"永遠複製"或者"如果較新則複製",或者你當然也可以手工地把檔案複製過去。

那麼這樣,是否還有問題呢?我覺得應該是有的,例如你並不想讓使用者知道該檔案的存在,但你又想用它?

我們知道如果不想使用者知道該檔案的存在,最保險的做法就是不複製過去;而如果不複製過去,那麼你**裡面有如何使用它呢?真是兩難的境地啊

事情可能沒有那麼糟糕,我們來看看下面的做法

1. 首先把"生成操作"設定為"嵌入的資源"

2. 然後通過如下的方式去讀取該檔案

using system;

using system.io;

namespace test}}

3. 這樣我們就實現了目的。難道不是嗎?可以看看下面的輸出

4. 我們還可以通過反編譯器看到這個資源在程式集中的樣子

C Winform 嵌入資源

在 visual studio開發環境中設定此編譯器選項 1.在 解決方案資源管理器 中,建立資料夾 floder 2.在 floder 下新增檔案,選擇要嵌入的檔案。3.右鍵檢視屬性,將 生成操作 設定為 嵌入的資源 獲取方法 注意 system.reflection.assembly.getex...

wxWidgets的資源讀取

快樂蝦http blog.csdn.net lights joy lights hb165.com 本文適用於 wxwidgets 2.8.8 vs2008 windows xp在vc 下使用資源,通常都是先在 resource.h 中定義乙個整數,比如 define idi lightning r...

從Exe裡面讀取資源,給exe增加嵌入字型

把資料放到exe檔案裡面有很多好處,理由也很多,比如 等等。這方面的例子也很多,就不細說了。我這裡只說說將一類資源全部打包到乙個壓縮檔案中,然後程式中讀取的方法。乙個zip壓縮包中,包含了大量的檔案,並且還有多級目錄,我們可以將整個資源全部提取出來,存入到乙個記憶體檔案 buffer 中。從資源中提...