- 浏览: 1022596 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (445)
- Java (22)
- J2EE (18)
- Flex (102)
- Flex-blazeds (1)
- Flex-FABridge (2)
- Flex4 (3)
- CheckStyle (2)
- PowerDesigner (0)
- POI (2)
- Java2Word (2)
- 杂项 (15)
- 日记 (3)
- 数据库-oracle (41)
- 数据库-SQLServer (7)
- 中间件 (1)
- 英语 (8)
- C# (43)
- ASP.net (72)
- ASP.net MVC (28)
- 微软-Entity Framework (19)
- JavaScript (22)
- JQuery (31)
- EasyUI (3)
- VS2010 (4)
- CVS (1)
- Tomcat (3)
- Linux (1)
- 遗留问题 (1)
- iphone (1)
- MAC (0)
- 系统 (2)
- Web Service (4)
- Cache Manager (1)
- PMP (1)
- WCF (10)
- BootstrapJs (1)
- Web API (6)
- Go语言 (0)
- 网络协议 (2)
- Redis (10)
- RabbitMQ (10)
- Git (3)
- Kafka (5)
- ELK (5)
- Nginx (3)
- 测试 (2)
最新评论
-
ygm0720:
Table行拖拽自己实现 -
程乐平:
Flex4开发视频教程(27集)下载http://bbs.it ...
Flex4教程 -
liuweihug:
Jquery+asp.net 后台数据传到前台js进行解析的办 ...
AJAX $.toJSON的用法或把数组转换成json类型 -
weilikk:
谢谢谢谢!!
javascript IE下不能用 trim函数解决方法 -
gxz1989611:
vigiles 写道请问楼主:[Fault] exceptio ...
blazeds推送技术至Flex
//
在这里,我来总结一下关于资源文件的相关操作。
//1.
比较常见的有获取资源文件对应的文件流,然后转换到相对应的文件
//
比较典型的做法是通过代码程序集加载指定资源
//
如下通过Assembly
的静态方法GetExecutingAssembly()
得到程序集
//
还有很多方式可以得到代码程序集
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); Stream manifestResourceStream = null; manifestResourceStream = asm.GetManifestResourceStream("MyLibrary." + filename); return manifestResourceStream; //得到该文件流,这里也可以是字符流。 //如果我们资源文件对应的该清单是一个图片文件 System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(manifestResourceStream, true); //如果我们的资源文件是光标文件 Cursor cursor = new Cursor(manifestResourceStream); //图标 Icon icon = new Icon(manifestResourceStream); //字符串 System.IO.StreamReader sr = new System.IO.StreamReader(manifestResourceStream); string str = sr.ReadLine();
//2.
另外一种写法,主要是通过ResourceManager
类的GetObject()
方法
//
也可以通过GetStream()
得到流后执行操作.
System.Resources.ResourceManager manager = new System.Resources.ResourceManager("资源名称", Assembly.GetExecutingAssembly()); Object target = manager.GetObject("资源文件名");//获取到指定的资源的值 //在这里对应我们加入到资源文件的清单, //转换回我没的目标值,可能会产生一个拆箱的过程 //如果我们资源文件对应的该清单是一个图片文件System.Drawing.Bitmap bitmap = (System.Drawing.Bitmap)target; //如果我们的资源文件是光标文件 Cursor cursor = (Cursor)target; //图标 Icon icon = (Icon)target; //字符串 string str = target.ToString();//或者manager manager.GetString("资源文件名");
//
通过以上两种操作,就可以从资源文件中进行一个指定资源的加载了。
//
前提是你的资源清单理存在该资源哦。
//
推荐使用第种方法,这种方法也是MS Resx
里对资源文件的操作方法。
//
现在我们已经可以读取资源文件了,现在开始写资源文件的操作。
//3.
当然,你可以直接通过设计界面来添加一个资源文件,
//
切记将生成操作改为“嵌入的资源”,Embed
System.Resources.ResourceWriter writer = new System.Resources.ResourceWriter("dongpad.com.resources"); writer.AddResource("bitmap", Image.FromFile(@"dongpad.bitmap")); writer.AddResource("cursor", Image.FromFile(@"dongpad.cursor")); writer.AddResource("ico", Image.FromFile(@"dongpad.ico")); writer.AddResource("str", Image.FromFile(@"dongpad.str")); //在这里资源的名称记得要唯一。 writer.Generate(); writer.Close();
//
下次給大家总结一下关于C#
开发中常用的一些重写。希望大家支持!
--参考文献--------------------------------------------------------------------------
什么是资源文件
在 .NET 中准备 World-Ready 程序时需要三步,Globalization,Localizability 和
Localization。在这第三步的 Localization 中就是使用资源文件最常见的地方。(本文不讨论 World-Ready
程序,或许以后在另一篇文章中)因为程序的逻辑界面需要与资源界面隔离,而资源界面就是我们所说的资源文件。顾名思义,一个资源文件中当然全是资源,不
过,什么是资源?这里所谓的资源就是程序中可利用的数据,譬如:字符串、图片和任何二进制数据,包括任何类型的文件。注意一个资源文件可以有多种语言版
本,举例,一个 Strings.resources 文件可以有英语版、简体中文版、繁体中文版等。 ResourceManager
可以自动根据文件名来确认调用哪个版本。不同的版本只要在文件名中添入区域语言就可以了。比如,我们的 Strings.resources
是默认版,英语版的可以是 Strings.en-US.resources(美国英文),简体中文的可以是
Strings.zh-CHS.resources(简体中文),而繁体中文的就可以是
Strings.zh-CHT.resources(繁体中文)。所谓的默认版就是当找不到适当的资源版本时用的资源,一般都是英文。默认文件应当被嵌入
到主 Assembly 中,这样就不会发生找不到资源的错误。在 VS.NET 中将一个文件的属性设为 Embedded Resource
可以使资源被嵌入到主 Assembly 中。
资源文件类型
System.Resources 名字空间支持三种资源文件:
.txt 文件,只能有字符串资源。因为不能被嵌入到 Assembly 中,所以很容易暴露,被客户修改。最大缺点是仅支持字符串资源,所以不推荐使用。
.resx 文件,由 XML 组成,可以加入任何资源,包括二进制。同样不能被嵌入到 Assembly 中。在 System.Resources
名字空间中有专用读写的类。VS.NET 创建这种文件然后将其转成 .resources 文件并根据设置将其嵌入到 Assembly 中。
.resources 文件,PE 格式,可以加入任何资源。唯一可以被嵌入到 Assembly 的文件,在 System.Resources 名字空间中有专用读写的类。
调用资源文件的几种方法
ResourceManager 可以根据不同的 UICulture 设置返回不同的本地资源(这与 World-Ready 程序有关,在此不讨论),我们只需知道调用资源用到它就可以了。接下来让我们看看如何调用每一种:
.txt 文件:
不可以直接调用,得先将其转换成 .resources 文件才能使用。(关于如何转换请看"推荐工具")
.resx 文件:
可以用 ResXResourceReader 来做读取,但是这种方法不直观,不推荐直接调用 .resx 文件。正确的方法是将其转换成
.resources 文件,然后用 ResourceManager 作读取工作。注意如果是在 VS.NET 中添加的 .resx
文件,那么它们自动被设为 Embedded Resource,转成 .resources 文件后被嵌入到 Assembly 中。
.resources 文件:
分成两种情况:
被嵌入或编译成 Satellite Assembly:
用 ResourceManager 的各种 constructor 来获得在 Assembly 中的资源。
单独文件,没被编译或嵌入到 Assembly 中:
可以用 ResourceManager.CreateFileBasedResourceManager 来获得资源集(ResourceSet),就是所有的资源。
特殊情况:
还有一种特殊情况,那就是当你直接嵌入一资源时,也就是说,不通过一个资源文件而直接将一资源嵌入到 Assembly 中。这可以在 VS.NET
中通过设置一文件的 Build 属性为 Embedded Resource 实现。在这种情况下 ResourceManager
就没有用了,因为它只能获取 .resources 资源文件(在或不在 Assembly 中)。那么如何调用这类的资源呢?不难,我们需要利用一些
Reflection 中的特征。别怕,不是让你再学 Reflection,其实我们只要了解一些
System.Reflection.Assembly 这个类中的一些函数就可以了。有三个相关函数,不过我们只需要
Assembly.GetManifestResourceStream 这个函数。这个函数将一嵌入到 Assembly 中的资源以 stream
的方式返回,而我们可以将这个 stream 转成在 .NET 中可用的对象。比如,如果嵌入资源是一图片,那么我们可以利用 New
Bitmap(Stream) 这个 Bitmap 的 constructor 获得这个图片资源的 Bitmap 对象。
注:在这里仅介绍怎样获得不同的资源的方法,关于怎样用各个类与函数请参看有关文档。
如何准确的定义资源文件的逻辑位置
我想这是许多人最关注的一段了!在这里作者将解说如何正确的填写 ResouceManager(String, Assembly) 这个
constructor,还有如何正确的填写
Assembly.GetManifestResourceStream(String),因为它们两个的原理是相同的。看过了上面的描述,到了这里就简
单多了。这里主要讨论的是怎么填写那个 String。这个 String
就是资源的完整名,一个完整名由它的名字空间和文件名前部分(BaseName)组成。例如,如果默认名字空间(root namespace)是
DefaultNamespace,资源文件的名字是 Strings.en-US.resources,那么它的完整名就是
DefaultNamespace.Strings。这个很简单,不过怎样确定名字空间呢?这就有些奇怪了,因为 C# 的编译器与 VB.NET
的编译器有些不同。作者在这里分别给出两个编译器怎样给嵌入资源自动添加命名空间:
C#
它自动添加 default
namespace(与 root namespace 相同),但也添加子文件夹的名字。例如,在 Subfolder 子文件夹下放的资源文件
Strings.en-US.resources,它的完整名是 default namespace + subfolder + base name
= DefaultNamespace.Subfolder.Strings
VB.NET
在 VB.NET 中就很简单了,它自动给嵌入资源添加 root namespace。不管你在哪个子文件夹中放置资源文件,资源文件的完整名永远是 root namespace + base name。
根据上面的描述,如果我们使用 C#,用 VS.NET 在 NewFolder 这个子文件夹中添加了一个叫 Images.resources
的资源文件,那么我们应该用以下代码获取这些资源,假设 default namespace 是 MyDefault:
ResourceManager res = new ResourceManager("MyDefault.NewFolder.Images", this.GetType().Assembly);
发表评论
-
DotNet 资源大全(下)
2018-07-12 10:18 585HTML 和 CSS(HTML and CSS) ... -
DotNet 资源大全(上)
2018-07-12 10:17 732API 框架 NancyF ... -
asp.net mvc处理css和js版本问题
2018-05-24 16:40 1398当服务的修改了js和css内容后,发布到II ... -
分布式系统调用链监控
2018-02-22 14:36 862分布式系统调用链监 ... -
IIS 优化
2017-06-28 21:57 1677通过对IIS7的配置进行优化,调整IIS7应用池的队列长度, ... -
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题
2017-06-28 21:39 2076读在最前面: 1、本文以IIS8,Windows Se ... -
使用C# 和Consul进行分布式系统协调
2017-05-11 10:41 1304随着大数据时代的到来,分布式是解决大数据问题的一个主要手段, ... -
查看IIS上面的每个网站分别用了多少内存
2017-05-05 12:57 877IS服务器上面运行了多个网站,想查看每个网站具体使用了系统多 ... -
Asp.net WebApi版本控制
2017-03-06 10:34 830关web api的版本控制网上有很多,如Web API 版本 ... -
.Net下RabbitMQ的使用(9) -- 在WCF下使用RabbitMQ
2016-12-19 10:42 1012RabbitMQ .net客户端通过自定义的Binding ... -
.Net下RabbitMQ的使用(8) -- 远程过程调用RPC
2016-12-19 10:42 1059RPC是在计算中是一种 ... -
.Net下RabbitMQ的使用(7) -- 消息的传输控制
2016-12-19 10:41 976前文中也多次提到消息传输的一些概念,这一篇比较全面的介绍一 ... -
.Net下RabbitMQ的使用(6) -- 持久化
2016-12-19 10:41 753消息的持久化是消息 ... -
.Net下RabbitMQ的使用(5) -- 路由机制
2016-12-19 10:41 532理清路由机制是了解RabbitMQ来龙去脉的关键。在前面的 ... -
.Net下RabbitMQ的使用(4) -- 订阅和发布
2016-12-16 10:26 1146消息的订阅和发布是使 ... -
.Net下RabbitMQ的使用(3) -- 竞争的消费者
2016-12-16 10:23 2493在上一篇文章中,演示了一个发送者和一个消费者的情况。这一篇介 ... -
.Net下RabbitMQ的使用(2) -- 发送接收消息
2016-12-16 10:20 1252在安装和配置完成Rabbit ... -
RabbitMQ消息队列(一): Detailed Introduction 详细介绍
2016-12-16 10:12 6081. 历史 RabbitMQ是 ... -
RabbitMQ 安装和监控
2016-12-16 10:14 864在Windows上安装Rabbit MQ 指南,最好的是这 ... -
Autofac创建实例的方法总结
2016-12-07 14:54 5551、InstancePerDependency 对每一个依 ...
相关推荐
这篇文章主要总结了如何操作C#中的资源文件,包括读取和写入资源文件的方法。 1. **获取资源文件** 获取资源文件通常涉及加载程序集并访问其中的资源。C#中的`System.Reflection.Assembly`类提供了获取当前执行...
### C#资源文件操作示例 #### 概述 在.NET框架中,资源文件(Resource Files)主要用于存储非代码部分的数据,比如图像、图标、字符串等,以便于在应用程序中使用。资源文件通常以.resx为扩展名,并可以方便地集成到...
总结,使用C#中的多个资源文件进行本地化是一项重要的任务,它能确保应用程序对全球用户的友好性。通过理解资源文件的创建、本地化、访问和管理,开发者可以有效地构建出适应多种语言环境的应用程序。在实际开发过程...
以下是对C#文件操作的详细总结: 1. 获取当前目录:使用`System.IO.Directory.GetCurrentDirectory()`方法可以获取到当前运行程序所在的目录,这对于定位资源文件或者处理相对路径非常有用。 2. 显示指定文件夹下...
### C# 文件的基本操作说明 在C#编程中,对文件进行操作是非常常见的需求之一。本文将详细介绍如何使用C#来进行文件的基本操作,包括文件的删除、创建、复制、重命名等。 #### 1. 使用 `Directory.GetFiles()` 和 ...
总结,C#中的文件操作主要包括读取、写入、删除和批量处理等,这些操作可以通过`System.IO`命名空间中的类和方法来实现。在编写文件操作的类时,考虑实现`IDisposable`接口以确保资源的正确释放。
总结,C#在VS2008环境下读取Excel文件,可以使用Microsoft Office Interop库或者第三方库如EPPlus。选择哪种方法取决于项目需求,如是否需要在无Excel安装的环境中运行、性能要求以及文件格式支持等因素。在处理大...
总结来说,开发一个C#文件资源管理器需要掌握以下知识点: 1. C#的`System.IO`命名空间,包括`Directory`和`FileInfo`类。 2. Windows Forms或WPF的用户界面设计,如`TreeView`和`ListView`控件。 3. 文件和目录的...
本篇总结旨在详细介绍C#中的文件操作技术,包括文件和文件夹的基本操作,如创建、删除、复制等,并通过具体的代码示例加深理解。 #### 二、关键类介绍 C#提供了多个类来支持文件操作,主要包括`File`、`FileInfo`、...
总结,C#提供了丰富的API来支持各种文件操作,从简单的读写到复杂的流处理和异步操作,覆盖了大部分开发需求。通过理解和熟练掌握这些知识,开发者可以在项目中高效地处理文件系统相关的任务。同时,不断学习和实践...
总结来说,C#资源管理器美化版展示了如何使用C#和可能的WPF技术构建一个功能完备且具有美观界面的文件管理应用。通过学习这个项目,开发者可以提升对C#编程、文件操作、UI设计以及事件处理等方面的知识。尽管代码...
总结来说,创建一个C#实现的文件资源管理器涉及多个方面的编程技术,包括文件系统操作、UI设计、事件处理、权限控制等。通过合理地组织代码和利用C#提供的类库,我们可以构建出功能强大且用户友好的文件管理工具。
C#资源管理器的实现涉及文件系统遍历、事件处理、文件操作和多线程技术。通过合理设计和实现,我们可以创建一个功能完备且用户体验良好的文件管理工具。在实际开发中,还应考虑其他因素,如性能优化、错误恢复、用户...
在C#编程中,开发者经常会遇到各种实际问题,如界面控件的操作、文件与资源的管理、程序配置的处理以及系统的维护等。本教程通过"87个经典实例"(虽然压缩包名为“C#经典150例”,但从描述中只提到87例)深入浅出地...
此外,为了提供良好的用户体验,可以使用异步操作来避免阻塞用户界面,比如使用`Task.Run`或`async/await`关键字进行异步文件操作。 总结来说,要实现"操作系统 任务资源管理器 C#",我们需要掌握以下几个关键知识...
- 结束Excel进程:在完成操作后,应调用`Application.Quit()`来关闭Excel应用程序,释放资源。 以上就是C#操作Excel的关键知识点,这些操作可以帮助开发者实现各种复杂的数据处理任务,例如数据导入导出、报表生成...
总结,使用C#进行文件加密和创建加密文件播放器涉及到多个技术层面,包括选择合适的加密算法、实现加密解密逻辑、构建用户友好的播放器界面以及处理安全性和性能问题。通过深入学习和实践,开发者可以构建出高效且...
在C#编程语言中,对文本文件的操作是基础且至关重要的技能。文本文件操作主要包括读取、写入、追加等操作,而这些操作在实际项目中常常涉及...在实际开发中,还要注意文件操作的异常处理和资源管理,确保程序的健壮性。