C#读取资源文件的两种方法及保存资源文件到本地
方法1 GetManifestResourceStream
VB.NET中资源的名称为:项目默认命名空间.资源文件名
C#中则是:项目命名空间.资源文件所在文件夹名.资源文件名
例如:
istr = assm.GetManifestResourceStream("项目命名空间.资源文件所在文件夹名.资源文件名");
读取资源文件
注意: 资源文件一定要是 嵌入的资源; 并且资源文件名要带扩展名的
Assembly assm = Assembly.GetExecutingAssembly();
Stream istr = assm.GetManifestResourceStream("CreateDatabase.Resources.aa.txt");
System.IO.StreamReader sr = new System.IO.StreamReader(istr);
string str = sr.ReadLine();
方法2 ResourceManager.GetObject("文件名")
读取资源文件
Assembly myAssem = Assembly.GetEntryAssembly();
ResourceManager rm = new ResourceManager("CreateDatabase.Properties.Resources", myAssem);
//CreateDatabase是你程序的命名空间,CreateDatabase.Properties 是资源类Resources的命名空间
// this.pictureBox1.Image = (Image)rm.GetObject("aa");
string str = rm.GetString("aa"); //资源文件名称不带扩展名
CreateDatabase.Properties 是资源类Resources的命名空间 , 资源文件名称不带扩展名
二、C#嵌入dll到资源释放的问题
有些程序运行的时候,可能调用外部的dll,用户使用时可能会不小心丢失这些dll,导致程序无法正常运行,因此可以考虑将这些dll嵌入到资源中,启动时自动释放。对于托管的dll,我们可以用打包软件合成一个exe(例如利用Imerge),但是对于一些用C++等写的非托管dll,就比较麻烦。在这种情况下,大家可以考虑本文介绍的方法。
1、将需要用到的dll文件嵌入资源文件中。
(1)将需要用到的dll文件拷贝到工程中;
(2)修改“生成操作”为“嵌入的资源”;
这样就完成了dll文件嵌入资源的过程。
2、编写自动释放的过程 (保存资源文件到本地)
(1)
void ReleaseDLL()
{
byte[] byDll = global::命名空间.Properties.Resources.test;//获取嵌入dll文件的字节数组
string strPath = Application.StartupPath + @"\test.dll";//设置释放路径 导出路径
//创建dll文件(覆盖模式)
using (FileStream fs = new FileStream(strPath, FileMode.Create))
{
fs.Write(byDll, , byDll.Length);
}
}
(注意:一定要设置 嵌入的资源)
在程序启动时,首先调用上面的函数完成dll文件的释放,然后程序就能够正常运行了。这种做法只是笔者在实际项目中有时采用的一种方式,相信对大家也有一定的参考价值。
(2)、 我使用这种方式也可以导出,但是导出的文件大小不对,文件损坏了,使用不了
System.Resources.ResourceManager rm = Properties.Resources.ResourceManager; System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bin = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); using (FileStream Stream = new FileStream("导出目录" + "\\test.dll", FileMode.Create))
{
bin.Serialize(Stream, rm.GetObject("test")); //test.dll名称
}
C#读取资源文件的两种方法及保存资源文件到本地的更多相关文章
- [转载]C#读写txt文件的两种方法介绍
C#读写txt文件的两种方法介绍 by 大龙哥 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char ...
- C#读写txt文件的两种方法介绍
C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出 ...
- elf格式转换为hex格式文件的两种方法
这周工作终于不太忙了,可以写点笔记总结一下了. 之前的文章如何在Keil-MDK开发环境生成Bin格式文件,介绍了如何在Keil开发环境使用fromelf软件,将生成的axf文件转换为bin文件,这次 ...
- C#读写txt文件的两种方法介绍[转]
C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出 ...
- C#读写txt文件的两种方法介绍 v
C#读写txt文件的两种方法介绍 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出 ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- MySQL命令执行sql文件的两种方法
MySQL命令执行sql文件的两种方法 摘要:和其他数据库一样,MySQL也提供了命令执行sql脚本文件,方便地进行数据库.表以及数据等各种操作.下面笔者讲解MySQL执行sql文件命令的两种方法,希 ...
- spring 配置文件 引入外部的property文件的两种方法
spring 的配置文件 引入外部的property文件的两种方法 <!-- 引入jdbc配置文件 方法一 --> <bean id="propertyConfig ...
- 合并BIN文件的两种方法(转)
源:http://blog.chinaunix.net/uid-20745340-id-1878803.html 合并BIN文件的两种方法 在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一 ...
随机推荐
- SQL Server 2014存储过程的备份和还原
Sql Server 2014存储过程备份和恢复... 1 1. 备份存储过程:... 1 2. 还原... 8 Sql Server 2014存储过程备份和恢复 1. 备份存储过 ...
- Codeforeces 954C Matrix Walk
题目大意 考虑一个 $x\times y$ 的矩阵 $A_{x\times y}$ ,$A_{i,j} = (i-1)x+y$ . 从矩阵中的某个位置出发,每次可向上下左右移动一步,每到一个位置,记录 ...
- 基于webpack搭建vue-cli以及webstorm的设置
N1.检查本地电脑是否安装node和npm 安装vue-cli的前提是已经安装了npm 是否安装npm检查命令 npm -v 如果出现版本号,说明已经安装了npm 查看node版本号 node -v ...
- bzoj 4310 跳蚤 二分答案+后缀数组/后缀树
题目大意 给定\(k\)和长度\(\le10^5\)的串S 把串分成不超过\(k\)个子串,然后对于每个子串\(s\),他会从\(s\)的所有子串中选择字典序最大的那一个,并在选出来的\(k\)个子串 ...
- 序列统计(bzoj 4403)
Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第一行包含一个整数T,表示数据组 ...
- python面试模拟真题讲解
一.选择题(32分) 1.python不支持的数据类型有:(A) A.char B.int C.float D.list 2.x = “foo” y = 2 print(x+y) ...
- 洛谷 P1072 Hankson 的趣味题
题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲 ...
- 【SPOJ61】Brackets(线段树)
题意:给出一个括号序列,要求维护两种操作: 1.将第x位上的括号取反 2.查询当前整个括号序列是否匹配 n<=3e4 思路:线段树维护区间内没有匹配的左右括号数量 pushup时t[p].r=t ...
- ashx接收参数 ashx传递参数
原文发布时间为:2009-09-30 -- 来源于本人的百度文章 [由搬家工具导入] Handler.ashx文件: <%@ WebHandler Language="C#" ...
- 基于c语言中调试工具的用法汇总(不包含gdb)【转】
转自:http://www.jb51.net/article/36829.htm 是不是只有编译的时候才知道程序写了错误?有没有在未编译的时候就让机器帮你检查错误的工具呢? 答案是:有!! splin ...