wpf中包含三种文件类型
- 资源文件:编译到可执行或库 WPF 程序集中的数据文件。
- 内容文件:与可执行 WPF 程序集具有显式关联的独立数据文件。
- 源站点文件:与可执行 WPF 程序集没有关联的独立数据文件。
这三种类型的文件之间的一个重要区别是:资源文件和内容文件在生成时是已知的;程序集明确地知道它们的存在。但是对于源站点文件,程序集可能完全不知道它们,或者通过
pack 统一资源标识符 (URI) 引用知道它们的存在;在后一种情况下,不能保证被引用的源站点文件实际存在。
说说资源文件的使用
如果应用程序数据文件必须始终可供某个应用程序使用,那么保证可用性的唯一方法是将其编译到应用程序的主可执行程序集中,或者它所引用的程序集中。这种类型的应用程序数据文件称为“资源文件”。
步骤:
1.选择一个文件当中资源文件,随便的txt,xml,图片都可以的
2.添加到vs项目中。点击右键可以看到其中的action(生成操作)选项要是“resources”
3.然后写一个方法来读取内容
//我是添加了一个sn.txt文件当中资源文件,然后就是读取其中内容而言,比较简单
Uri uri = new Uri("/sn.txt", UriKind.Relative);//这个就是所以的pack uri。
StreamResourceInfo info = Application.GetResourceStream(uri);
Stream s = info.Stream;
byte[] buffer = new
byte[2014];
s.Read(buffer, 0,100);
string x =
Encoding.GetEncoding("gb2312").GetString(buffer);
MessageBox.Show(x);
4编译以后。生成文件就是一个exe文件。可以把exe文件放到随便的一个地方。。都可以正常读取sn.txt文件。因为sn.txt文件已经被内置到exe中了
2.内容文件的使用
内容文件是作为松散文件与可执行程序集一起分发的。虽然它们不编译到程序集中,但编译程序集时所使用的元数据建立了与每个内容文件的关联。
如果应用程序需要一组特定的应用程序数据文件,并且您希望能够更新这些文件,而无需重新编译使用它们的程序集,则应该使用内容文件。
但是要将“生成操作”设置为“内容”,还要将“复制到输出目录”设置为“始终复制”或者更新复制
StreamResourceInfo info =
Application.GetContentStream(url);//GetResourceStream(uri);
第三源站点文件
- 编译时文件不存在。
- 在运行时之前您不知道程序集将需要哪些文件。
- 您希望能够更新文件,而又无需重新编译与这些文件关联的程序集。
- 应用程序使用大型数据文件,如音频和视频,并且您希望仅在用户选择下载时才下载这些文件。
使用传统的 URI 方案可以加载这些类型的文件,如 file:/// 和 http://
方案。
添加到vs中文件的“生成操作”设置为“none”或无读取方法使用GetRemoteStream
转自:http://zjysky.blog.hexun.com/45743830_d.html