C#读取资源文件

开发 后端
这里介绍C#读取资源文件,在资源文件里加载文件就两个操作,一个是创建资源文件,一个是C#读取资源文件。

C#读取资源文件概述

资源文件很早就有了,在.NET时代里这个东西也不算稀奇,在进行多国语言化的时候
通常把不同翻译的文字存放到资源包里。以前资源文件除了放字符串以外,还可以放文件。不过在C#的工程里面,资源管理面板是空的(vc++工程里资源面板可以使用),无法直接编辑资源属性,不过每个WinForm都会带一个.resx的文件,这个文件就是WinForm的资源文件。如果通过添加新项目的方法,给工程里添加资源文件的话,产生的也是.resx文件。估计.resx文件是.NET给c#新设计的资源文件格式。.resx以XML格式保存,主要存放字符串。对于文件我还没有找到添加到.resx的方法,因此我们需要用其它方法把文件打包到资源文件里面。

资源文件打包

.NET除了.resx资源文件格式外,还有一个.resources的资源文件格式。它可以支持把文件的加载,需要做通常的做法如下:

  1. System.Resources.ResourceWriter rw = new ResourceWriter(@"..\..\abc.resources");  
  2. rw.AddResource("abc", new byte[10000000]);  
  3. rw.Generate();  
  4. rw.Close(); 

创建一个ResourceWriter的对象用于写资源文件。文件的后缀名必须是.resources,不让其它的系统无法识别。然后是通过 AddResource的方法写资源信息,这个信息可以是一个字符串,也可以是一个byte数组,甚至可以是一个对象(image)。添加好以后就是 Generate和close了。这样运行程序后,资源文件就制作完成了。


获取资源文件

资源文件打包好以后,下一步是把资源文件集成到项目里。方法有两个,一个是用控制台的方式编译项目,通过加载资源文件的方式把资源加载到exe里,另外一个简单很多,就是把直接把资源文件加载到工程里,vs会根据后缀名识别出来加载的文件属于资源文件,在进行编译的时候会自动把这个文件打包到资源文件里。如果编译后发现资源文件没有加到exe文件,可以设置资源文件的属性,把Build Action的属性设置为Embedded Resource。

资源文件成功加到exe文件后,下一步就是在程序里C#读取资源文件。

  1. System.Resources.ResourceManager rm = new System.Resources.
    ResourceManager("Resunce.abc", this.GetType().Assembly);  
  2. byte[] bit = rm.GetObject("abc") as byte[]; 

通常是创建一个ResourceManager的对象,***个参数是资源的名字,这里要注意的是“Resunce”是编译的时候,组件(命名空间)名字,“abc”是资源文件的名字。如果前面不是通过VS的工程文件进行编译,而是通过控制台方式直接编译,那么资源的名字不需要带组件的名字,只是 “abc”就可以了。原因吗,我估计可能是vs在进行编译的时候,带了某些参数(确定了组件名),所以在项目C#读取资源文件的时候需要带组件名。

资源文件打包工具

在资源文件里加载文件就两个操作,一个是创建资源文件,一个是C#读取资源文件。在创建资源文件的时候如果没有什么特殊要求,可以通过资源打包工具来创建。在SDK里面的例子程序有一个打包工具,对其进行编译就可以用了。

【编辑推荐】

  1. 如何用C#和ADO.NET访问
  2. 浅析C# Switch语句
  3. C#验证输入方法详解
  4. 简单介绍C# 匿名方法
  5. C# FileSystemWatcher对象
责任编辑:佚名 来源: 51CTO.com
相关推荐

2009-08-28 16:08:28

C#利用资源文件

2013-07-30 12:30:57

Windows PhoWindows Pho

2020-08-25 07:16:20

Python资源文件文件

2009-08-13 09:32:00

C#读取TXT文件

2013-06-17 17:02:15

Windows PhoWP开发资源文件

2009-08-13 09:58:55

C#读取配置文件

2009-08-13 09:16:57

C#读取配置文件

2011-08-15 14:47:28

Cocoa嵌入资源文件

2009-08-24 17:58:19

C#读取XML文件

2009-09-01 11:25:08

C#读取Word文件

2009-08-12 17:27:11

C#读取文件

2012-02-03 09:55:06

Delphi

2011-06-20 14:18:27

Qt 资源 文件

2009-08-12 17:19:09

C#读取文件内容

2009-08-12 18:29:06

C#读取TXT文件

2009-06-02 14:21:04

eclipse资源文件eclipse中文

2009-08-24 18:06:36

源程序代码C#读取XML文件

2009-08-12 18:06:53

C#读取二进制文件

2009-08-07 12:12:00

C#读取Excel文件

2009-08-12 16:57:28

C#读取文件夹
点赞
收藏

51CTO技术栈公众号