剖析VB.NET資源文件使用案例
資源是一種很寶貴的東西,在各種語言的開發(fā)中都盡可能的減少資源的浪費(fèi),在以前我做程序,版權(quán)使用協(xié)議信息總是放在一個txt文本文件中,打包時和可執(zhí)行文件放在一起,在安裝時釋放到程序的安裝路徑,然后再打開使用。這種做法有兩大壞處,一是這個文件很容易被其它人修改,二是可以套用蠟筆小新的一句話:"這種做法太不成熟了吧!"?,F(xiàn)在我使用一個新的方法,就是將協(xié)議和可執(zhí)行文件結(jié)合在一起,在程序運(yùn)行時讀出使用,當(dāng)然這就全靠資源的作用了。VB.NET 資源文件步驟如下:
1、在VB.net中新建一個項目,類型選擇windows應(yīng)用程序,項目名稱改為resourcesample2。
2、點(diǎn)擊項目菜單,選擇添加現(xiàn)有項,接著會彈出一個文件對話框,將文件類型改為所有文件后,選擇要嵌入的txt文件(其實(shí)這時你可選擇任意文件,只要你喜歡*-)。接著你會在解決方案資源管理器中發(fā)現(xiàn)你新加入的文件名。如圖:
3、關(guān)鍵的一步到了,在解決方案資源管理器中點(diǎn)擊你剛加入的文件名,然后在屬性窗體中將 "加成操作" 這一屬性改為"嵌入的資源",這將告訴net,剛加入的文件將會作為資源鏈接進(jìn)可執(zhí)行文件中。留意一下文件名哦,這在后面的程序中也很重要,強(qiáng)烈建議使用小寫文件名!如下圖:
4、接下就是在程序中用代碼讀出這個文件的內(nèi)容。
在Form1_Click事件中加入代碼,如下所示:
- Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click
- Dim tobjStream As IO.Stream = Me.GetType.Assembly.GetManifestResourceStream("resourcesample2.License.txt")
- Dim tobjStreamReader As New IO.StreamReader(tobjStream, System.Text.Encoding.Default)
- Dim tstrLicense As String = tobjStreamReader.ReadToEnd
- '如果是圖象就可以使用dim tobjBMP as new bitmap(tobjstrem)的方法直接得到資源內(nèi)容
- MessageBox.Show(tstrLicense)'顯示剛才讀得的結(jié)果
- End Sub
在此對上述代碼進(jìn)行一點(diǎn)解釋,net是通過Assembly的GetManifestResourceStream讀出嵌入在可執(zhí)行文件的資源并以IO.Stream對象返回(反正得到了這個流,就好象你時進(jìn)行文件流操作,讀/寫到磁盤或象我一樣在程序內(nèi)部處理都由你自己決定了)。這個方法的***參數(shù)是資源的***標(biāo)識,是按如下方式組成的:程序集的根命名空間+"."+資源在屬性窗口顯示的文件名(這是區(qū)分大小寫的,在上文已提醒你注意了哦,而且這個標(biāo)識法在C#中是不同的,別問我為什么,誰叫你不和我一樣使用VB.net,哼8-)。
程序集的根命空間的名你可以從項目菜單下的XXXX(XXXX是你的項目名稱,可不要認(rèn)為是罵人的話8-)屬性中看到:
其余的代碼就是以流方式讀VB.NET 資源文件,很簡單吧。
5、按生成菜單下的生成解決方案,然后到你可執(zhí)文件的目錄下看看,你會發(fā)現(xiàn)除了可執(zhí)行文件外沒有別的文本文件,因為文本文件已以資源的方式存在于可執(zhí)行文件中啦。運(yùn)行一下看看效果啊(一些想做黑客的菜鳥又有什么怪怪的想法,藏木馬?……)通過上面的講述大家對VB.NET 資源文件有深入的了解了吧。
【編輯推薦】